     fetchActivity: fetchChannelActivity
     fetchGroupActivity: fetchGroupActivity
     fetchPopularTopics: fetchPopularTopics
+    listPinnedMessages:(rest...)-> channelApiFuncMultiRes 'listPinnedMessages', rest...
+    pin               :(rest...)-> KD.remote.api.SocialChannel.pinMessage rest...
+    unpin             :(rest...)-> KD.remote.api.SocialChannel.unpinMessage rest...
 
   messageApiFunc = (name, rest..., callback)->
     KD.remote.api.SocialMessage[name] rest..., (err, res)->
       return callback null, mapActivity res
+
+  channelApiFuncMultiRes = (name, rest..., callback)->
+    KD.remote.api.SocialChannel[name] rest..., (err, result)->
+      return callback err if err
+      return callback null, mapActivities result
 
   message:
    edit                  :(rest...)-> messageApiFunc 'edit', rest...

    return callback {message: "Channel id is not set for request"} unless options.id
    getCurrentGroup (group)->
      options.groupName = group.slug
      {SocialChannel} = KD.remote.api
      SocialChannel.fetchActivity options, (err, result)->
        return callback err if err
        return callback null, mapActivities result

  fetchGroupActivity = (options, callback)->
    getCurrentGroup (group)->
      return callback {message: "Group doesnt have socialApiChannelId"} unless group.socialApiChannelId
      options.id        = group.socialApiChannelId
      options.groupName = group.slug
      {SocialChannel} = KD.remote.api
      SocialChannel.fetchActivity options, (err, result)->
        return callback err if err
        return callback null, mapActivities result

  fetchChannels = (options, callback)->
    getCurrentGroup (group)->

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

  mapActivities = (messages)->
    # if no result, no need to do something
