anchor.diff:  
   handle_call({getuser, Ukey}, _From, State) ->
     {reply, doGetUser(Ukey), State};
  +
  +handle_call({updateprofile, Ukey, KeyValList}, _From, State) ->
  +  {reply, doUpdateProfile(Ukey, KeyValList), State};
   
   handle_call({checkuser, Email, Password}, _From, State) ->
     {reply, doCheckuser(Email, Password), State}.
  
positive.code:   end.
  
  doGetUser(Ukey) ->
    case qredis:q(["GET", lists:concat(["datasmart:users:", Ukey, ":profile"])]) of
      {ok, Result} ->
        {Json} = jiffy:decode(Result),
        User = [{binary_to_atom(Key, utf8), Val} || {Key, Val} <- Json],
        {ok, User};
      _ -> {error, "No User was Found"}
    end.
  
  hashPass(Password, Salt, 0) ->
    hash_md5:build( lists:concat([Password, Salt]) );
  
  hashPass(Password, Salt, Factor) when (Factor rem 2) > 0 ->
    hashPass(hash_md5:build( lists:concat([Password, Salt]) ), Salt, Factor - 1 );
  
  hashPass(Password, Salt, Factor) ->
    hashPass(hash_md5:build( lists:concat([Salt, Password]) ), Salt, Factor - 1 ).
negative.code: %%%-------------------------------------------------------------------
  %%% @author evangelosp
  %%% @copyright (C) 2014, evalonlabs
  %%% @doc
  %%%
  %%% @end
  %%%-------------------------------------------------------------------
  -module(user_server).
  -author("evangelosp").
  