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:     //set round state so playable check can get active player
      roundState = RoundState.play_card;
  
      _checkAllPlayable();
  
      //update round state and wait for card placement
      if (selections.keys.length == 0) {
  
negative.code:           .forEach(selections.remove);
      }
  
      _checkAnyPlayable();
  
      //update round state if no players left to move
      if (selections.keys.length == 0) {
  