     defaultPermissionSet  = new JPermissionSet {}, { privacy: group.privacy }
     { sessionToken }      = client
 
+    save_ = (label, model, callback) ->
+      model.save (err) ->
+        return callback err  if err
+        console.log "#{label} is saved"
+        callback null
+
     queue = [
 
-      ->
+      (next) ->
         group.useSlug group.slug, (err, slug) ->
-          return callback err  if err
-          return callback new KodingError 'Couldn\'t claim the slug!'  unless slug?
+          return next err  if err
+          return next new KodingError 'Couldn\'t claim the slug!'  unless slug?
 
           console.log "created a slug #{slug.slug}"
           group.slug  = slug.slug
           group.slug_ = slug.slug
-          queue.next()
-
-      ->
-        save_ 'group', group, queue, (err) ->
-          if err
-            JName.release group.slug, -> callback err
-          else
-            queue.next()
-
-      ->
+          next()
+
+      (next) ->
+        save_ 'group', group, (err) ->
+          return next()  unless err
+          JName.release group.slug, ->
+            next err
+
+      (next) ->
         selector = { clientId : sessionToken }
         params   = { $set : { groupName : group.slug } }
 
-        JSession.update selector, params, (err) ->
-         return callback err  if err
-         queue.next()
-
-      ->
-        group.addMember owner, (err) ->
-          return callback err  if err
-          console.log 'member is added'
-          queue.next()
-
-      ->
-        group.addAdmin owner, (err) ->
-          return callback err  if err
-          console.log 'admin is added'
-          queue.next()
-
-      ->
-        group.addOwner owner, (err) ->
-          return callback err  if err
-          console.log 'owner is added'
-          queue.next()
-
-      ->
-        save_ 'default permission set', defaultPermissionSet, queue, callback
-
-      ->
-        group.addDefaultPermissionSet defaultPermissionSet, (err) ->
-          return callback err  if err
-          console.log 'permissionSet is added'
-          queue.next()
-
-      ->
-        group.addDefaultRoles (err) ->
-          return callback err  if err
-          console.log 'roles are added'
-          queue.next()
-
-      ->
+        JSession.update selector, params, next
+
+      (next) ->
+        group.addMember owner, next
+
+      (next) ->
+        group.addAdmin owner, next
+
+      (next) ->
+        group.addOwner owner, next
+
+      (next) ->
+        save_ 'default permission set', defaultPermissionSet, next
+
+      (next) ->
+        group.addDefaultPermissionSet defaultPermissionSet, next
+
+      (next) ->
+        group.addDefaultRoles next
+
+      (next) ->
         group.createSocialApiChannels client, (err) ->
           console.error err  if err
           console.log 'created socialApiId ids'
-          queue.next()
-
-      ->
+          next()
+
+      (next) ->
         { shareCredentials } = require '../computeproviders/teamutils'
         account = client.connection.delegate
 
         shareCredentials { group, account }, (err) ->
           console.log 'shared credentials', err
-          queue.next()
+          next()
 
     ]
 
     if 'private' is group.privacy
-      queue.push ->
-        group.createMembershipPolicy groupData.requestType, -> queue.next()
-
-    queue.push =>
+      queue.push (next) ->
+        group.createMembershipPolicy groupData.requestType, -> next()
+
+    async.series queue, (err) =>
+      return callback err  if err
       @emit 'GroupCreated', { group, creator: owner }
       callback null, group
-
-    daisy queue
 
 
   @create$ = secure (client, formData, callback) ->

      subPage    : require '../../render/loggedout/subpage'


  save_ = (label, model, queue, callback) ->
    model.save (err) ->
      return callback err  if err
      console.log "#{label} is saved"
      queue.next()


  @create = (client, groupData, owner, callback) ->

    # bongo doesnt set array values as their defaults


  { Relationship } = require 'jraphical'

  { Inflector, ObjectId, ObjectRef, secure, daisy, dash, signature } = require 'bongo'

  JPermissionSet = require './permissionset'
  { permit }     = JPermissionSet

  JAccount       = require '../account'
  KodingError    = require '../../error'
  Validators     = require './validators'
  async          = require 'async'
  { throttle, extend }     = require 'underscore'

  PERMISSION_EDIT_GROUPS = [
