   users     = {}
   guests    = {}
 
-  @unregister = secure (client, confirmUsername, callback) ->
+  @unregister = secure (client, toBeDeletedUsername, callback) ->
     {delegate} = client.connection
+
+    # deleter should be registered one
     if delegate.type is 'unregistered'
       return callback createKodingError "You are not registered!"
-    unless confirmUsername is delegate.profile.nickname or
+
+    # only owner and the dummy admins can delete a user
+    unless toBeDeletedUsername is delegate.profile.nickname or
            delegate.can 'administer accounts'
       return callback createKodingError "You must confirm this action!"
 
     @createGuestUsername (err, username) =>
       return callback err  if err?
       email = "#{username}@koding.com"
-      @fetchUser client, (err, user) =>
+      @one { username: toBeDeletedUsername }, (err, user) =>
         return callback err  if err?
-        return callback createKodingError "User not found #{username}"  unless user
+        return callback createKodingError "User not found #{toBeDeletedUsername}"  unless user
 
         userValues = {
           username

            globalFlags           : ['deleted']
            onlineStatus          : 'offline'
          }
          delegate.update $set: accountValues, (err)=>
            return callback err  if err?
            JName.release confirmUsername, (err)=>
              return callback err  if err?
              JAccount.emit "UsernameChanged", {
                oldUsername    : confirmUsername
                isRegistration : false
                username
              }
              ((require 'koding-counter') {
                db          : JAccount.getClient()
                counterName : "koding~#{confirmUsername}~"
                offset      : 0
              }).reinitialize ->
              user.unlinkOAuths =>
                Payment = require "../payment"
                Payment.deleteAccount client, (err)=>
                  @logout client, callback

  @isRegistrationEnabled = (callback)->


          foreignAuth     : {}
        }
        modifier = { $set: userValues, $unset: { oldUsername: 1 }}
        # update the user with empty data
        user.update modifier, (err, docs) =>
          return callback err  if err?

          accountValues = {
            'profile.nickname'    : username
            'profile.firstName'   : 'a former'
