     targets = constructorNames
 
     filters = []
-    if options?.filters
+    if options.filters
       for filter in options.filters  when filter in relationshipNames
         filters.push filter
 
     if filters.length > 0
-      sources = filterSources options.filters
-      as      = options.filters
-      targets = filterTargets options.filters
+      sources = mapSourceNames filters
+      as      = filters
+      targets = mapTargetNames filters
 
 
     from = options.from or +(new Date())

        do kallback

  @fetch = secure (client, options = {}, callback) ->
    {connection: {delegate}} = client

    sources = constructorNames

    sharedMethods :
      static      : ["fetch"]

  relationshipNames = ["follower", "like", "member", "user",  "author"]
  constructorNames  = ["JAccount", "JNewApp", "JGroup", "JTag", "JNewStatusUpdate"]

  JAccount = require './account'

  mapSourceNames = (filters)=>
    relationshipMap =
      "follower" : ["JAccount", "JTag"]
      "like"     : ["JAccount", "JNewStatusUpdate"]
      "member"   : ["JGroup"]
      "user"     : ["JApp"]

    sources = []
    # iterate on filters and add required
    # constructor names into sourceNames
    for filter in filters
      sources.concat relationshipMap[filter]

    # if we couldnt find any applied filter
    # it should be checked at calling side
    return uniq sources

  mapTargetNames = (filters) ->
    validFilters = ["follower", "like", "member", "user"]
    targets = []
    # The only possible options are either returning only "JAccount" or
