anchor.diff:                             ip = Ip,
                              port = Port},
         case handle_message(MessageType, Message, Metadata) of
  -        undefined -> lager:info("received garbage ~p from ~p", [Message, Ip]);
  -        _Ok       -> ok
  +        undefined ->
  +          lager:info("received bad message ~p from ~p", [Message, Ip]);
  +        _Ok ->
  +          ok
         end
     end;
   % Garbage and malformed messages are simply ignored
  -handle_udp(_Garbage, _UdpSocket, _Ip, _Port) ->
  +handle_udp(MalforedMessage, _UdpSocket, Ip, _Port) ->
  +  lager:info("received malformed message from ~p: ~p", [Ip, MalforedMessage]),
     ok.
   
   %% PING
  
positive.code:              MessageId:?USHORT,
               UserTime:?USHORT,
               UserId:?USHORT,
               Message/binary>>,
             UdpSocket, Ip, Port) ->
    case get_message_type(Flags) of
      undefined ->
        lager:info("received completely unexpected message from ~p", [Ip]);
      MessageType ->
        Metadata = #metadata{messageId = MessageId,
                             userTime = UserTime,
  
negative.code: udp_opts() ->
    [{mode, binary}, {reuseaddr, true}].
  
  get_message_type(1) -> ping;
  get_message_type(2) -> info;
  get_message_type(3) -> join;
  get_message_type(4) -> action;
  get_message_type(_Garbage) -> undefined.
  
  set_flags(Flags) ->
  