diff --git a/std/thing/description.c b/std/thing/description.c
index b5db0d8..afbb16e 100644
--- a/std/thing/description.c
+++ b/std/thing/description.c
@@ -68,36 +68,25 @@
   // Aenderungen an dieser Prop sind tabu.
   Set( P_CLONE_TIME, NOSETMETHOD|SECURED, F_MODE_AS );
 
-  // Wenn das Objekt bereits ein P_CLONER hat, wurde create() zweimal gerufen.
-  // Dies ist ein Fehler und vermutlich ist das Objekt jetzt kaputt. In jedem
-  // Fall wird das alte P_CLONER nicht ueberschrieben.
-  if (Query(P_CLONER, F_MODE))
+  // Id des Cloners und des Besitzers kommen nach P_CLONER
+  if (objectp( tp=this_interactive()||this_player() ))
   {
-      catch(raise_error("create() wurde ein zweites Mal gerufen. Dieses "
-            "Objekt ist nun vermutlich kaputt.\n"); publish);
+    tpid=geteuid(tp);
+    if (!(tpid=geteuid(tp))) tpid=getuid(tp);
   }
   else
+    tpid="UNKNOWN";
+
+  if (previous_object())
   {
-    // Id des Cloners und des Besitzers kommen nach P_CLONER
-    if (objectp( tp=this_interactive()||this_player() ))
-    {
-      tpid=geteuid(tp);
-      if (!(tpid=geteuid(tp))) tpid=getuid(tp);
-    }
-    else
-      tpid="UNKNOWN";
-
-    if (previous_object())
-    {
-      if (!(poid = geteuid(previous_object())))
-        poid = getuid(previous_object());
-    }
-    else
-      poid="UNKNOWN";
-
-    Set( P_CLONER, (poid != tpid ? poid+":"+tpid: tpid) );
-    Set( P_CLONER, NOSETMETHOD|SECURED, F_MODE_AS );
+    if (!(poid = geteuid(previous_object())))
+      poid = getuid(previous_object());
   }
+  else
+    poid="UNKNOWN";
+
+  Set( P_CLONER, (poid != tpid ? poid+":"+tpid: tpid) );
+  Set( P_CLONER, NOSETMETHOD|SECURED, F_MODE_AS );
 
   // Gibt es FPs ?
   explore = (mixed *)EPMASTER->QueryExplore();
