// 'color' arg because some variants (e.g. Refusal) check opponent moves
   filterValid(moves, color) {
-    if (!color)
-      color = this.turn;
+    color = color || this.turn;
     const oppCols = this.getOppCols(color);
     let kingPos = this.searchKingPos(color);
     return moves.filter(m => {
 
   // NOTE: for pushes, play the pushed piece first.
   //       for pulls: play the piece doing the action first
   // NOTE: to push a piece out of the board, make it slide until its king
-  getPotentialMovesFrom([x, y]) {
-    const color = this.turn;
+  getPotentialMovesFrom([x, y], color) {
+    const color = color || this.turn;
     const sqCol = this.getColor(x, y);
     const pawnShift = (color == 'w' ? -1 : 1);
     const pawnStartRank = (color == 'w' ? 6 : 1);
     return [];
   }
 
+  getAllPotentialMoves(color) {
+    
+  }
+
   getSlideNJumpMoves([x, y], steps, oneStep) {
     let moves = [];
     const c = this.getColor(x, y);