anchor.diff:      }
   
       while (currentActions < 5) {
  -      Action action = player.human.getAction();
  -      if (action.playerIndex != currentTurn % players.length) {
  -        player.human.alert("You can only submit moves for yourself!");
  -      } else {
  -        try {
  -          currentActions += action.perform(deck, discard, players, (player.getKi() ~/ 3) - currentActions);
  -          // TODO now that we know command is valid, update command history list and update players
  -        } on InvalidActionException catch (e) {
  -          player.human.alert(e.msg);
  -        }
  -      }
  +      Action action = interface.getAction(currentTurn % players.length, players, (player.getKi() ~/ 3) - currentActions);
  +      currentActions += action.perform(deck, discard, players, interface);
         if (deck.isEmpty) {
           var tmp = deck;
           deck = discard;
  
positive.code: class Game {
  
    final List<Player> players = new List();
    int currentTurn = 0;
    int currentActions = 0;
    bool isAnyoneShogun = false;
    List<Card> deck;
    List<Card> discard = new List();
    List<String> commandHistory = new List();
  
    bool doTurn() {
      Player player = players[currentTurn % players.length];
  
negative.code:     //TODO put initial state into command history
  
      while(!doTurn());
      interface.update("win " + (currentTurn % players.length).toString());
    }
  }
  