   # @private
   initState : (state, cb) ->
     @roomState.initState state, cb
+
+  # @private
+  removeState : (cb) ->
+    @roomState.removeState cb
+
+  # @private
+  getUsers: (cb) ->
+    @roomState.getList 'userlist', cb
 
   # @private
   leave : (userName, cb) ->

  # @private
  roomRemoveFromList : (roomName, listName, values, cb) ->
    @withRoom roomName, withEH cb, (room) =>
      room.removeFromList @username, listName, values, withEH cb, (data) =>
        if @enableAccessListsUpdates
          @send roomName, 'roomAccessListRemoved', roomName, listName, values
        @removeRoomUsers data, roomName, cb

  # @private
  roomSetWhitelistMode : (roomName, mode, cb) ->
    @withRoom roomName, withEH cb, (room) =>
      room.changeMode @username, mode, withEH cb, (data) =>
        @removeRoomUsers data, roomName, cb


# An instance creates a new chat service.


# @private
# @nodoc
#
# @extend DirectMessagingPermissions
# Implements DirectMessaging state manipulations with the respect to a
# users permission.
class DirectMessaging

  extend @, DirectMessagingPermissions

  # @private
  constructor : (@server, @username) ->
