private boolean followFootprints(RPSAgent agent) {
        List<Footprint> footprints = agent.getServer().getFootprints();
        List<Peer> servers = agent.getServer().getNeighbours();
        Set<Peer> slaves = agent.getSlaves();
        if(footprints.size() > 0 && servers.size() > 0) {
            long currentTime = System.currentTimeMillis();
            for(Footprint p : footprints) {
                if(currentTime - p.getTimestamp() < 2000 && //Don't follow old tracks
                        !slaves.contains(p.getHome()) &&    //Only follow potential participants
                        servers.contains(p.getDestination()) && //Must be able to move there
                        !p.getHome().equals(agent.getHome())) { //Don't follow yourself
                    agent.log("'I saw " + p.getHome() + " leave towards " + p.getDestination() + "', the host said, pointing with his thick arm.");
                    agent.log("'He might be willing to join you.'");
                    agent.log("I thanked the host and left the tavern quickly, in hope I would reach " + p.getDestination() + " in time.");
                    agent.setState(new FindState());
                    agent.migrate(p.getDestination());
                    return true;
                }
            }
        }
        return false;
    }