       destinations: []
       branches: []
 
-    @findSources @nodes[id], autoresolve
+    unless onlySource
+      @findSources @nodes[id], autoresolve
+    else
+      @nodes[id].sources.push @nodes[onlySource]
+      @nodes[onlySource].destinations.push @nodes[id]
 
     id
 

      seqId = "#{id}_#{seq}"
    seqId

  registerNode: (source, name, type, callback, autoresolve = true) ->
    unless callback
      type = name
      callback = type

            return
          if state.countFulfilled() > 1
            f = state.getBranches()[0]
            f.forEach (fulfilled, i) =>
              choice.branch "#{choice.id}_#{i}", (bnode) =>
                log.values "#{@name or @id} #{choice} resulted via branch #{bnode} in #{typeof fulfilled.value} %s", fulfilled.value
                bnode.registerSubleaf fulfilled.choice, true, true
                fulfilled.value
            return
          if state.countRejected()
            [rejected] = state.getBranches state.rejected
