anchor.diff:  
               let cmdType = typeof<AddPersonCommand>.FullName
   
  -            let cmdHandler2 : cmdHandler =
  -                fun (cmdObj : obj) -> 
  -                    let realHandler (cmd : AddPersonCommand) =
  -                        (cmd.Id.ToString(), myStateBuilder, (fun (state : obj) -> (Choice1Of2 (Seq.singleton ({ PersonAddedEvent.Id = cmd.Id; Name = cmd.Name; ParentId = cmd.ParentId } :> obj)) )))
  -                    match cmdObj with
  -                    | :? AddPersonCommand as cmd -> realHandler cmd
  -                    | _ -> failwith <| sprintf "Unexpected command type: %A" (cmdObj.GetType())
  -
  -            let h : cmdHandler = cmdHandler2
  +            let myCmdHandler (cmd : AddPersonCommand) (state : unit) =
  +               Choice1Of2 (Seq.singleton ({ PersonAddedEvent.Id = cmd.Id; Name = cmd.Name; ParentId = cmd.ParentId } :> obj)) 
  +
               let config = 
                   EventProcessingConfiguration.Empty
  -                |> (fun config -> { config with CommandHandlers = config.CommandHandlers |> Map.add cmdType h })
  +                |> EventProcessingConfiguration.addCommand (fun (cmd : AddPersonCommand) -> cmd.Id.ToString()) myStateBuilder myCmdHandler
   
               let model = new EventModel(connection, config)
               model.RegisterHandler onChildAdded
  
positive.code:     type cmdHandler = obj -> (string * IStateBuilder * (obj -> Choice<seq<obj>, seq<string>>))
  
      type EventProcessingConfiguration = {
          CommandHandlers : Map<string, cmdHandler>
          StateBuilders: Set<IStateBuilder>
          EventHandlers : Map<string, obj -> (string *  IStateBuilder * unit -> seq<string>)>
      }
      with static member Empty = { CommandHandlers = Map.empty; StateBuilders = Set.empty; EventHandlers = Map.empty } 
  
      type EventModel (connection : IEventStoreConnection, config : EventProcessingConfiguration) =
          let mutable handlers : Map<string, ResolvedEvent -> option<string * seq<obj>>> = Map.empty
  
  
negative.code:             let cmdKey = cmd.GetType().FullName
              let result =
                  match config.CommandHandlers |> Map.tryFind cmdKey with
                  | Some (t,handler) -> 
                      let (stream, stateBuilder, handler') = handler cmd
                      let state = stateBuilder.Zero
                      handler' state
  