   consume: ->
     values = @queue
     @queue = []
-    -> values
-  push: (x) -> @queue.push(x())
+    {value: -> values}
+  push: (x) -> @queue.push(x.value())
   hasAtLeast: -> true
 
 Source.isTrigger = (s) ->

  isInitial: -> true
  isNext: -> false
  apply: (value) -> new Initial(value)
  toNext: -> new Next(@value)

class End extends Event
  isEnd: -> true

        Bacon.once(x).concat(Bacon.later(minimumInterval).filter(false)))

  not: -> withDescription(this, "not", @map((x) -> !x))

  log: (args...) ->
    @subscribe (event) -> console?.log?(args..., event.log())
    this
