anchor.diff:      }
     }
   
  -  void _handlePayment(Card card, Player player) {
  +  void _payConstructionFee(Card card, Player player) {
       if (card.isCap && pot > 0) {
         print("Card is cap, and pot has cash.");
         pot -= 1;
  
positive.code:       return false;
      }
  
      //TODO add validity check for payment path, if required
  
      board.playCardToStation(loc, card, playedDir, player.playerNum);
  
      roundData[player.playerNum].deferred.remove(card);
  
      //update pot and player cash for card payment
      _handlePayment(card, player);
      if(player.cash == 0){
        _endGame();
  
        return true;
      }
  
      //TODO handle connection fees
  
      if(player.cash == 0){
        _endGame();
  
negative.code:     }
      
      //if the player has at least one card in the board, and not one
      //immediately connected neighbor card of the same player exists, a path is required
      bool pathRequired = board.countByPlayer(player.playerNum) > 0 &&
        !CardUtil.allDirections.any((dir) => 
          CardUtil.exits(card,playedDir).contains(dir) && 
  