       machine.shareWith$ client, options, (err) ->
 
         callback err, machine
+
+
+  setChannelId: permit 'set label',
+
+    success: revive
+
+      shouldReviveClient   : yes
+      shouldLockProcess    : yes
+      shouldReviveProvider : no
+
+    , (client, options, callback) ->
+
+      { channelId } = options
+      { r: { user } } = client
+
+      # Only an owner of this machine can modify it
+      unless isOwner user, this
+        return callback new KodingError 'Access denied'
+
+      if channelId
+
+        if typeof channelId isnt 'string' or channelId.length > 20
+          return callback new KodingError 'Invalid ChannelID provided'
+
+        @update { $set: { channelId } }, (err) =>
+          return callback err  if err
+          return callback null, this
+
+      else
+
+        @update { $unset: { channelId: 1 } }, (err) =>
+          return callback err  if err
+
+          delete this.data.channelId
+          delete this.channelId
+
+          return callback null, this

          (signature Object, Function)
        unshare         :
          (signature Object, Function)

        # Disabled for now ~ GG
        # setAsOwner      :

        templateId      : ObjectId
        revision        : String

      channelId         :
        type            : String


  # Helpers
  # -------
