 
     queue = [
 
-      ->
+      (next) ->
         userInfo = {
           email, username, password, lastName, firstName, emailFrequency
         }
         createUser { userInfo }, (err, data) ->
-          return callback err  if err
+          return next err  if err
           { user, account } = data
-          queue.next()
-
-      ->
+          next()
+
+      (next) ->
         params = {
           user, ip, country, region, username
           password, clientId, account, client
         }
         updateUserInfo params, (err, newToken_) ->
-          return callback err  if err
+          return next err  if err
           newToken = newToken_
-          queue.next()
-
-      ->
-        updateAccountInfo { account, referrer, username }, (err) ->
-          return callback err  if err
-          queue.next()
-
-      ->
+          next()
+
+      (next) ->
+        updateAccountInfo { account, referrer, username }, next
+
+      (next) ->
         groupNames = [client.context.group, 'koding']
         options    = { skipAllowedDomainCheck }
         JUser.addToGroups account, groupNames, user.email, invitation, options, (err) ->
           error = err
-          queue.next()
-
-      ->
-        createDefaultStackForKodingGroup { account }, (err) ->
-          return callback err  if err
-          queue.next()
+          next()
+
+      (next) ->
+        createDefaultStackForKodingGroup { account }, next
+
+    ]
+
+    async.series queue, (err) ->
+      return callback err  if err
 
       # passing "error" variable to be used as an argument in the callback func.
       # that is being called after registration process is completed.
-      -> callback null, { error, newToken, user, account }
-
-    ]
-
-    daisy queue
-
+      callback null, { error, newToken, user, account }
 
 
   @convert = secure (client, userFormData, options, callback) ->

            then console.error err
            else console.log "#{referrer} referred #{username}"

            queue.next()

      -> callback null

    ]

    daisy queue


  createDefaultStackForKodingGroup = (options, callback) ->

            inactive  : 1

        user.update userUpdateOptions, (err) ->
          return next err  if err

          # This should be called after login and this
          # is not correct place to do it, FIXME GG
