 
     slugs.push invitation.groupName if invitation?.groupName
     slugs = uniq slugs # clean up slugs
-    queue = slugs.map (slug) => =>
-      @addToGroup account, slug, email, invitation, options, (err) ->
-        return callback err  if err
-        queue.fin()
-
-    dash queue, callback
+    queue = slugs.map (slug) => (fin) =>
+      @addToGroup account, slug, email, invitation, options, fin
+
+    async.parallel queue, callback
 
 
   @createGuestUsername = -> "guest-#{rack()}"


    queue = [

      ->
        userInfo = {
          email, username, password, lastName, firstName, emailFrequency
        }
        createUser { userInfo }, (err, data) ->
          return callback err  if err
          { user, account } = data
          queue.next()

      ->
        params = {
          user, ip, country, region, username
          password, clientId, account, client
        }
        updateUserInfo params, (err, newToken_) ->
          return callback err  if err
          newToken = newToken_
          queue.next()

      ->
        updateAccountInfo { account, referrer, username }, (err) ->
          return callback err  if err
          queue.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()

      # 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



  @convert = secure (client, userFormData, options, callback) ->


    queue = [

      (next) ->
        # fetching account, will be used to check login constraints of user
        user.fetchOwnAccount (err, account_) ->
          return next err  if err
          account = account_
          next()

      (next) ->
        # checking login constraints
        checkBlockedStatus user, next

      (next) ->
        # updating user passwordStatus if necessary
        updateUserPasswordStatus user, (err) ->
          return next err  if err
          replacementToken = createId()
          next()

      (next) ->
        # updating session data after login
        sessionUpdateOptions =
          $set                :
