anchor.diff:              view.showHover("");
             } else {
               view.showHover(_.currentTarget.getAttribute("parent"));
  -            print(_.currentTarget.getAttribute("parent"));
             }
           });
         }
       });
  -
  -    view.arena.onMouseEnter.listen((ev) {                 //Listen only when mouse is in Field
  -      querySelectorAll('.hex').onClick.listen((_) {       //get all hex elements
  -        if (last != _.currentTarget.id) {                          //only way to prevent multiclick due to 
  -          if (!_.currentTarget.classes.contains('.corner-1') &&
  -              !_.currentTarget.classes.contains('.corner-2')) {
  -            if (game != null && game.currentPlayer.id == "human") {
  -              
  +    
  +    /*
  +     * Additional Listener to turn of hovereffect if the mouse moves out of the 
  +     * arena.
  +     */
  +    view.arena.onMouseLeave.listen((ev) {
  +      view.showHover("");
  +    });
  +
  +    /*
  +     * Listener to handle all clicking actions of the player inside of the arena.
  +     * To prevent multiple events from triggering with one click, it is impossible
  +     * to click the same hexagon twice in a row.
  +     * First click on a valid territory (at least 2 dice, owned by the player) selects
  +     * the first territory.
  +     * Second click on a valid territoy (enemy-owned territory adjacent to the first one)
  +     * Clicking twice on the same territory deselects it.
  +     * If two territories are selected, an attack gets computed and shown on the view.
  +     * 
  +     */
  +    view.arena.onMouseEnter.listen((ev) {                 
  +      querySelectorAll('.hex').onClick.listen((_) {     
  +        if (last != _.currentTarget.id) {                   
  +          if (!_.currentTarget.classes.contains('.corner-1') && !_.currentTarget.classes.contains('.corner-2')) {
  +            if (game != null && game.currentPlayer.id == "human") { 
                 String parent = _.currentTarget.getAttribute("parent");
                 String owner = _.currentTarget.getAttribute("owner");
                 last = _.currentTarget.id;
  
positive.code:               if (game.firstTerritory == null &&
                    owner == "human" &&
                    game._arena.territories[parent].dice > 1) {
  
                  //selectTerritory as first one
                  game.firstTerritory = game._arena.territories[parent];
                  view.markTerritory(parent);
                } else if (game.firstTerritory != null &&
                    parent == game.firstTerritory.id) {
                  //if there is a territory selected and the new one is the same
                  game.firstTerritory = null;
                  view.markTerritory(parent);
                } else if (game.firstTerritory != null &&
  
negative.code:     }
    }
  
    /*
     * Selects the next player and ends the game if there is only one player left
     * 
     */
    nextTurn() {
      if (!(game.players.length > 2)) {
        if (game.currentPlayer.id == "human") {
          view.showMessage("You won the game!");
                int nextLevel = (int.parse(game.level.attributes[0].value)) + 1;
                new Timer(new Duration(milliseconds: 5000), () => startGame(nextLevel));
                game = null;
                
                return;
        } else {
          view.showMessage("You lost the game! :( Restarting at level 1!");
          game = null;
          new Timer(new Duration(milliseconds: 5000), () => startGame(1));
                        return;
        }
        
  