       return callback err if err
       return callback null, mapChannels result
 
+  sendPrivateMessageRequest = (name, rest..., callback)->
+    KD.remote.api.SocialMessage[name] rest..., (err, result)->
+      return callback err if err
+      return callback null, mapPrivateMessages result
+
+  mapPrivateMessages = (messages)->
+    messages = [].concat(messages)
+    return [] unless messages?.length > 0
+
+    mappedMessages = []
+
+    for messageContainer in messages
+      message = mapActivity messageContainer.lastMessage
+      message.channel = mapChannels(messageContainer)[0]
+      mappedMessages.push message
+
+    return mappedMessages
+
   mapActivities = (messages)->
     # if no result, no need to do something
     return messages unless messages

    delete :(rest...)-> KD.remote.api.SocialMessage.delete rest...
    like   :(rest...)-> KD.remote.api.SocialMessage.like rest...
    unlike :(rest...)-> KD.remote.api.SocialMessage.unlike rest...

  channel:
    list                 : fetchChannels

      m.repliesCount = message.replies.length or 0
      m.interactions = message.interactions

      # todo- remove those event bindings
      m.on "MessageReplySaved", log
      m.on "update", log

