    delete                :(rest...)-> KD.remote.api.SocialMessage.delete rest...
    like                  :(rest...)-> KD.remote.api.SocialMessage.like rest...
    unlike                :(rest...)-> KD.remote.api.SocialMessage.unlike rest...
-   listPinnedMessages    :(rest...)-> KD.remote.api.SocialMessage.unlike rest...
-   pin                   :(rest...)-> KD.remote.api.SocialMessage.unlike rest...
-   unpin                 :(rest...)-> KD.remote.api.SocialMessage.unlike rest...
 
   mapActivities = (messages)->
     # if no result, no need to do something

    fetchActivity: fetchChannelActivity
    fetchGroupActivity: fetchGroupActivity
    fetchPopularTopics: fetchPopularTopics

  messageApiFunc = (name, rest..., callback)->
    KD.remote.api.SocialMessage[name] rest..., (err, res)->
      return callback null, mapActivity res

  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
      channelApiFuncMultiRes "fetchActivity", options, callback

  fetchGroupActivity = (options, callback)->
    getCurrentGroup (group)->
      return callback {message: "Group doesnt have socialApiChannelId"} unless group.socialApiChannelId
      options.id        = group.socialApiChannelId
      options.groupName = group.slug
      channelApiFuncMultiRes "fetchActivity", options, callback

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