diff --git a/server/Battle.js b/server/Battle.js
index da84616..fe8a027 100644
--- a/server/Battle.js
+++ b/server/Battle.js
@@ -389,8 +389,12 @@ var Battle = (function(){
   r.userLeft = function(sideName){
     var side = this[sideName];
 
-    side.foe.send("foe:left", null, true);
 
+    if(side.foe){
+      side.foe.send("foe:left", null, true);
+      return;
+    }
+    console.log("side foe not defined!", side.foe);
   }
 
   r.shutDown = function(){
diff --git a/server/Battleside.js b/server/Battleside.js
index 6935035..ec4283d 100644
--- a/server/Battleside.js
+++ b/server/Battleside.js
@@ -77,7 +77,13 @@ Battleside = (function(){
     this.receive("decoy:replaceWith", function(data){
       if(self._isWaiting) return;
       var card = self.findCardOnFieldByID(data.cardID);
-      if(card === -1) throw new Error("decoy:replace | unknown card");
+      /*if(card === -1) throw new Error("decoy:replace | unknown card");*/
+      if(card === -1) {
+        console.log("decoy:replace | unknown card: ", card);
+        self.sendNotificationTo(self, "Possible bug occured: unknown card was chosen by playing decoy ability.");
+        //self.endTurn();
+        return;
+      }
       self.runEvent("Decoy:replaceWith", self, [card]);
     })
     this.receive("cancel:decoy", function(){
diff --git a/server/Field.js b/server/Field.js
index 300cac0..c0d3043 100644
--- a/server/Field.js
+++ b/server/Field.js
@@ -75,7 +75,9 @@ var Field = (function(){
     this._cards[index] = newCard;
     oldCard.reset();
     for(var event in oldCard._uidEvents) {
-      this.side.off(event, oldCard.getUidEvents(event));
+      if(this.side && this.side.off){
+        this.side.off(event, oldCard.getUidEvents(event));
+      }
     }
     return oldCard;
   }
@@ -102,13 +104,15 @@ var Field = (function(){
       }
       this._cards[i] = null;
     }*/
-    tmp.forEach(function(card, i) {
+    tmp.forEach(function(card, i){
       card.reset();
       if(card.__lock){
         return;
       }
       for(var event in card._uidEvents) {
-        this.side.off(event, card.getUidEvents(event));
+        if(this.side && this.side.off){
+          this.side.off(event, card.getUidEvents(event));
+        }
       }
       this._cards[i] = null;
     }, this)
@@ -137,7 +141,9 @@ var Field = (function(){
     cards.forEach(function(card){
       card.reset();
       for(var event in card._uidEvents) {
-        this.side.off(event, card.getUidEvents(event));
+        if(this.side && this.side.off){
+          this.side.off(event, card.getUidEvents(event));
+        }
       }
       res.push(_cards.splice(self.getPosition(card), 1)[0]);
     })