           queue.next()
 
       ->
-        userInfo =
-          { email, username, password, lastName, firstName, emailFrequency }
-
+        userInfo = {
+          email, username, password, lastName, firstName, emailFrequency
+        }
         createUser { userInfo }, (err, data) ->
           return callback err  if err
           { user, account } = data
           queue.next()
 
       ->
-        updateUserInfo {
+        params = {
           user, ip, country, region, username, client, account, clientId
-        }, queue, callback, (newToken_) -> newToken = newToken_
+        }
+        updateUserInfo params, (err, newToken_) ->
+          return callback err  if err
+          newToken = newToken_
+          queue.next()
 
       ->
         updateAccountInfo { account, referrer, username }, queue, callback


        JUser.changeUsernameByAccount _options, (err, newToken_) ->
          return callback err  if err
          fetchData newToken_
          _queue.next()

      ->
        queue.next()

    ]

    daisy _queue


  updateAccountInfo = (options, queue, callback) ->

      callback null, { user, account }


  updateUserInfo = (options, callback) ->

    { user, ip, country, region, username, client, account, clientId } = options

    queue = [

      ->
        # updating user's location related info
        return queue.next()  unless ip? and country? and region?

        locationModifier =
          $set                       :
