anchor.diff:      (handleCommand:'TCommand -> 'TAggregate -> Async<Result<'TEvent, CQRSFailure>>)
       (handleEvent:'TEvent -> 'TAggregate -> 'TAggregate)
       (streamId:string)
  -    (buildAggregate:Guid)
  +    (buildAggregate:Guid -> Async<'TAggregate>)
       (initialVersion:int) = 
       
       let save expectedVersion events = store.AppendToStream streamId expectedVersion events
  
positive.code:             return! messageLoop initialVersion
              }
  
      fun command -> agent.PostAndAsyncReply(fun replyChannel -> command, replyChannel)
  
  
negative.code:         let rec messageLoop version = async {
              let! aggregateId, command, replyChannel = inbox.Receive()
              
              let! aggregate = buildAggregate aggregateId
              let! result = handleCommand command aggregate
              match result with
              | Success newEvent ->
  