public void onMessage(Application.Request message) {
        System.out.println(message);

        if (Requests.QUIT.equals(message)) {
            dispatch(Events.SHUTDOWN);
        }

        if (Requests.SetTeam.class.isInstance(message)) {
            Requests.SetTeam set = Requests.SetTeam.class.cast(message);
            dispatch(new Events.CurrentTeam(set.team));
        }

        if (Requests.Pick.class.isInstance(message)) {
            final Requests.Pick pick = Requests.Pick.class.cast(message);
            Predicate<String> matchPlayer = new Predicate<String>() {

                public boolean apply(java.lang.String input) {
                    return false;
                }
            } ;
            Iterable<String> match = Iterables.filter(playerRepository.getPlayers(),matchPlayer);
            List<String> players = Lists.newArrayList(match);

            if (players.isEmpty()) {
                dispatch(new Events.NoMatch(pick.player));
            } else {
                if (1 == players.size()) {
                    String player = players.get(0);
                    if (selectedFilter.apply(player)) {
                        dispatch(new Events.AlreadyTaken(player));
                    } else {
                        String team = pick.team;
                        RosterSlot<String> crntSlot = new RosterSlot<String>(team, player);
                        addToRoster(crntSlot);
                    }
                } else {
                    dispatch(new Events.AmbiguousPlayer<String>(pick.player,players));
                }
            }
        }
    }