+async     = require 'async'
 jraphical = require 'jraphical'
 KodingError = require '../error'
 

      sourceId : @getId()
    }, { limit, sort: { '_id' : -1 } }, (err, rels) ->
      accounts = []
      daisy queue = rels.map (r) ->
        ->
          JAccount = require './account'
          JAccount.one { _id: r.targetId }, (err, acc) ->
            accounts.push acc  if not err and acc
            queue.next()

      queue.push -> callback null, accounts

  follow: secure (client, options, callback) ->
    [callback, options] = [options, callback] unless callback

            when 'deleted' then deletedTags.push tag.title
            when 'synonym'
              childTag = tag
              synonyms.push (fin) ->
                childTag.fetchSynonym (err, synonym) ->
                  if not err and synonym?
                    resultMap[synonym.getId()] ?= synonym
                    parentTag = resultMap[synonym.getId()]
                    parentTag.children ?= []
                    parentTag.children.push childTag.title
                  fin()
            else resultMap[tag.getId()] = tag

        async.parallel synonyms, ->
          result = []
          result.push val for key, val of resultMap
          callback null, { tags: result, deletedTags }
