   constructor: (@subscribe) ->
     super()
     combine = (other, leftSink, rightSink) => 
-      myVal = Bacon.none
-      otherVal = Bacon.none
+      myVal = None
+      otherVal = None
       new Property (sink) =>
         unsubscribed = false
         unsubMe = nop

class PropertyDispatcher extends Dispatcher
  constructor: (subscribe, handleEvent) ->
    super(subscribe, handleEvent)
    current = Bacon.none
    push = @push
    subscribe = @subscribe
    @push = (event) =>
      if event.hasValue()
        current = event.value
      push.apply(this, [event])
    @subscribe = (sink) =>
      if @hasSubscribers() and current != Bacon.none
        reply = sink initial(current)
        if reply == Bacon.noMore
          return nop
      subscribe.apply(this, [sink])

class Bus extends EventStream
  constructor: ->

                unsubBoth if reply == Bacon.noMore
                reply
            else
              setValue(new Some(event.value))
              if (myVal.isDefined and otherVal.isDefined)
                if initialSent and event.isInitial()
                  # don't send duplicate Initial
                  Bacon.more
                else
                  initialSent = true
                  reply = thisSink(sink, event, myVal.value, otherVal.value)
                  unsubBoth if reply == Bacon.noMore
                  reply
              else
