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