       waiters.push {obs, f}
   flush = ->
     if waiters.length
-      console.log "flushing, waiters", (_.map _.toString, (_.map ((x) -> x.obs), waiters))
+      #console.log "flushing, waiters", (_.map _.toString, (_.map ((x) -> x.obs), waiters))
       ok = _.filter independent, waiters
-      console.log "ok to send", ok.length
-
-      # TODO: problem is that what's registered here may be an Observable
-      # that's skipped in the descriptions as an impl.detail, and so the
-      # deps never point to this one.
-
-      if waiters.length == 2
-        console.log("**", Bacon.dependsOn(waiters[0].obs, waiters[1].obs))
-        console.log("**", Bacon.dependsOn(waiters[1].obs, waiters[0].obs))
+
+      # 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]

        _.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

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