}
       if (
         V.OnBoard(rx, ry) &&
+        this.board[rx][ry] != V.EMPTY &&
         this.getPiece(rx, ry) == piece &&
         this.getColor(rx, ry) == color
       ) {
 
   a(href="https://www.youtube.com/watch?v=tQ2JLsFvfxI") Video
   |  showing gameplay. See also 
   a(href="http://pacosako.com/") the main website
-  | , and the associated
+  | , and the associated 
   a(href="http://pacoplay.com/") playing area
   | .
 
   a(href="https://www.youtube.com/watch?v=tQ2JLsFvfxI") Video
   |  showing gameplay. See also 
   a(href="http://pacosako.com/") the main website
-  | , and the associated
+  | , and the associated 
   a(href="http://pacoplay.com/") playing area
   | .
 
   a(href="https://www.youtube.com/watch?v=tQ2JLsFvfxI") Video
   |  showing gameplay. See also 
   a(href="http://pacosako.com/") the main website
-  | , and the associated
+  | , and the associated 
   a(href="http://pacoplay.com/") playing area
   | .
 
     "Gridolina",
     "Hamilton",
     "Magnetic",
+    "Pacosako",
     "Parachute",
     "Takenmake",
     "Titan",
 
     "Gridolina",
     "Hamilton",
     "Magnetic",
+    "Pacosako",
     "Parachute",
     "Takenmake",
     "Titan",
 
 
   getPiece(i, j, color) {
     const p = this.board[i][j].charAt(1);
-
-console.log(p);
-
     if (ChessRules.PIECES.includes(p)) return p;
     const c = this.board[i][j].charAt(0);
     // NOTE: this.turn == HACK, but should work...
       this.lastMoveEnd.push(Object.assign({}, move.end, { p: released }));
     }
     V.PlayOnBoard(this.board, move);
+    this.postPlay(move);
   }
 
   undo(move) {
       this.turn = V.GetOppCol(this.turn);
       this.movesCount--;
     }
+    this.postUndo(move);
   }
 
   getCurrentScore() {