   if streams.length
     sources = for s in streams
       new Source(s, true, false, s.subscribeInternal)
-    Bacon.when(sources, ((xs...) -> xs), describe("combineAsArray", streams)).toProperty().withDescription("combineAsArray", streams)
+    withDescription("combineAsArray", streams, Bacon.when(sources, ((xs...) -> xs), describe("combineAsArray", streams)).toProperty())
   else
     Bacon.constant([])
 

    new Property describe(desc || "scan", this, seed, f), subscribe

  fold: (seed, f) =>
    @scan(seed, f).sampledBy(@filter(false).mapEnd().toProperty()).withDescription("fold", this, seed, f)

  zip: (other, f = Array) ->
    Bacon.zipWith([this,other], f)


  awaiting: (other) ->
    this.toEventStream().map(true).merge(other.toEventStream().map(false)).toProperty(false)

Observable :: reduce = Observable :: fold

