 Bacon.dependsOn = (a,b) ->
   if a == b
     return false
-  deps = a.deps()
+  deps = a.allDeps
   for dep in deps
     if dep == b
       return true

        _.flatMap findDeps, x
      else if isObservable(x)
        [x]
      else
        []
    @apply = (obs) ->
      obs.deps = -> findDeps(args)
      obs.toString = -> _.toString(context) + "." + _.toString(method) + "(" + _.map(_.toString, args) + ")"
      obs.desc = -> { context, method, args }
      obs

      waiters.push {obs, f}
  flush = ->
    if waiters.length
      #console.log "flushing, waiters", (_.map _.toString, (_.map ((x) -> x.obs), waiters))
      ok = _.filter independent, waiters

      # TODO: still something amiss. Doesn't block updates..
      #
      firstIndex = _.indexWhere waiters, independent
      throw "no independent observable" if firstIndex < 0
      {f} = waiters.splice(firstIndex, 1)[0]
