@Override
    public synchronized void broadcastRecieved(Message message) {
        
        if (updateTimeStamps(message)) {
            System.out.println("Message Recieved: " + message.toString());
            try {
                switch (message.getMessageType()) {
                    case ELECTION:
                        startElection();
                        break;
                    case ELECT:
                        ElectionBroadcast.addElection(message);
                        break;
                    case DECLARE_LEADER:
                        LEADER.setLeader(message);
                        break;
                    case PEER_LOST:
                        //Tell leader to remove ip address from files
                        SHARED_FILES.peerLost(message);
                        break;
                    case FIND_LEADER:
                        //Broadcast request for who is the leader
                        LEADER.broadcastLeader();
                        break;
                    case REQUEST_SNAPSHOT:  // Request snapshot to include requester's IP in message content.
                        //DirectMessage sender
                        Message reply = new Message(MessageType.SUPPLY_TIMESTAMP,
                                message.getSenderIPAddress(), "Supplying Timestamp");
                        DirectMessage.sendDirectMessage(reply);
                        break;
                    case SUPPLY_TIMESTAMP:
                        break;
                } 
            } catch (UnknownHostException ex) {
                Logger.getLogger(PeerNode.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            System.out.println("Message Ignored: " + message.toString()); 
        }
    }