anchor.diff:        return true;
       }
   
  -    _payConnectionFees(new PaymentPath.from(path), player);
  -
  -    if(player.cash == 0){
  -      _endGame();
  -
  -      return true;
  +    if(pathRequired) {
  +      _payConnectionFees(new PaymentPath.from(path), player);
  +
  +      if(player.cash == 0){
  +        _endGame();
  +  
  +        return true;
  +      }
       }
   
       if (board.isClosed) {
  
positive.code:         .forEach(selections.remove);
    }
    
    void _checkAllPlayable() {
      print("Checking all playable for activePlayer: ${activePlayer}");
      print("Round Data: ${roundData}");
      if (activePlayer == null) return;
      if (!roundData[activePlayer.playerNum].deferred.any((card) => board.isPlayable(card))) {
  
negative.code:           .forEach(selections.remove);
      }
  
      _checkAnyPlayable();
  
      //update round state if no players left to move
      if (selections.keys.length == 0) {
  