anchor.diff:      Digest1 = hex(erlang:md5([Password, Username])),
       Str = ["md5", hex(erlang:md5([Digest1, Salt])), 0],
       send(State, $p, Str),
  -    {State, Timeout};
  +    {noreply, State, Timeout};
   
   auth(_Username, _Password, {$R, <<M:?int32, _/binary>>}, State) ->
       case M of
  
positive.code: auth(_Username, Password, {$R, <<3:?int32>>}, State) ->
      #state{timeout = Timeout} = State,
      send(State, $p, [Password, 0]),
      {State, Timeout};
  
  %% AuthenticationMD5Password
  auth(Username, Password, {$R, <<5:?int32, Salt:4/binary>>}, State) ->
  
negative.code: 
  
  initializing(_, State) ->
      %% TODO incomplete
      {noreply, State#state{on_message = fun on_message/2}}.
  
  on_message({$N, Data}, State) ->
      %% TODO use it
  