diff --git a/secure/explorationmaster.c b/secure/explorationmaster.c
index 8ca09d6..6bcb346 100644
--- a/secure/explorationmaster.c
+++ b/secure/explorationmaster.c
@@ -589,7 +589,7 @@
   }
 }
 
-nomask mixed *QueryExplore()
+nomask <string*|int>* QueryExplore()
 {
   string fn;
 
@@ -603,7 +603,7 @@
     }
 
   vc_ob = 0;
-  return ({ obs[fn, MPOS_TYPE], obs[fn] });
+  return ({ obs[fn, MPOS_TYPE], obs[fn, MPOS_KEY] });
 }
 
 nomask int QueryMaxEP()
diff --git a/secure/master.h b/secure/master.h
index 958043c..e0b8ea7 100644
--- a/secure/master.h
+++ b/secure/master.h
@@ -88,7 +88,7 @@
 
 // aus misc.c
 string         _get_path(string path, string user);
-mixed          QueryBanished(string str);
+string         QueryBanished(string str);
 int            TBanishName(string name, int days);
 
 // sendet bei Befoerderungen Infomail an Magier
diff --git a/secure/master/misc.c b/secure/master/misc.c
index b113ad6..7d41566 100644
--- a/secure/master/misc.c
+++ b/secure/master/misc.c
@@ -63,7 +63,7 @@
 
 void UpdateTBanish();
 
-mixed QueryBanished(string str){
+string QueryBanished(string str){
   int i;
 
   if (!str) return 0;
@@ -79,7 +79,7 @@
   return 0;
 }
 
-mixed QueryTBanished(string str) {
+string QueryTBanished(string str) {
   int i;
 
   if (!str || !mappingp(tbanished) || !(i=tbanished[str]))
@@ -265,7 +265,7 @@
 }
 
 
-mixed QuerySBanished( string ip )
+string QuerySBanished( string ip )
 {
     int save_me, site;
     string banished_meldung =
@@ -314,7 +314,7 @@
 }
 
 
-mixed SiteBanish( string ip, int days )
+mapping|int SiteBanish( string ip, int days )
 {
     string *s, tmp, euid;
     int t, level;
@@ -339,10 +339,12 @@
         return 0;
     }
 
-    if ( !days ) {
+    if ( !days )
+    {
         int int_ip = IPv4_addr2int(ip);
 
-        if( member(sbanished, int_ip) ){
+        if( member(sbanished, int_ip) )
+        {
             // Fremde Sitebanishs duerfen nur Deputies loeschen.
             if ( sbanished[int_ip, 1] != euid && !IsDeputy(euid) )
                 return -1;
@@ -354,11 +356,13 @@
                              capitalize(sbanished[int_ip, 1]) ) );
 
             m_delete( sbanished, int_ip );
+            //Fall-through ans Ende der Funktion fuer return 1;
         }
         else
             return 0;
     }
-    else {
+    else
+    {
         // Alles, was nicht Deputy ist, darf nur fuer einen Tag sbanishen.
         if ( days != 1 && !IsDeputy(euid) )
             return -1;
@@ -400,7 +404,6 @@
                                      : "fuer einen Tag")
                          : "bis zum St. Nimmerleinstag" ) );
     }
-
     UpdateSBanish();
     return 1;
 }
