         'resolvePendingRequests','fetchVocabulary', 'fetchMembershipStatuses',
         'setBackgroundImage', 'removeBackgroundImage', 'fetchAdmin', 'inviteByEmail',
         'inviteByEmails', 'inviteByUsername', 'kickMember', 'transferOwnership',
-        'remove', 'sendSomeInvitations', 'fetchNewestMembers', 'countMembers'
+        'remove', 'sendSomeInvitations', 'fetchNewestMembers', 'countMembers',
+        'fetchBundle', 'createBundle', 'destroyBundle'
       ]
     schema          :
       title         :

          customType      :
            type          : String
            default       : 'defaultImage'
            enum          : ['Invalid type', [ 'defaultImage', 'customImage', 'defaultColor', 'customColor']]
          customValue     :
            type          : String
            default       : '1'
          customOptions   : Object
    relationships   :
      permissionSet :
        targetType  : JPermissionSet
        as          : 'owner'

      unless err
        for admin in admins
          admin.sendNotification event, contents

  destroyBundle: (callback) ->
    @fetchBundle (err, bundle) =>
      return callback err  if err?
      return callback new KodingError 'Bundle not found!'  unless bundle?

      bundle.remove callback

  destroyBundle$: permit 'change bundle',
    success: (client, callback) -> @destroyBundle callback

  createBundle: (callback) ->
    @fetchBundle (err, bundle) =>
      return callback err  if err?
      return callback new KodingError 'Bundle exists!'  if bundle?

      JGroupBundle = require '../bundle/groupbundle'

      bundle = new JGroupBundle
      bundle.save (err) =>
        return callback err  if err?

        @addBundle bundle, callback

  createBundle$: permit 'change bundle',
    success: (client, callback) -> @createBundle callback

  fetchBundle$: permit 'change bundle',
    success: (client, rest...) -> @fetchBundle rest...
