anchor.diff:          | _ -> None
   
       let getCommand (repeat: int option) commandType textObject =
  -        Some { repeat=(match repeat with | Some r -> r | None -> 1); commandType=commandType; textObject=textObject }
  -
  -    let wait = getCommand (Some 1) DoNothing Nothing
  +        { repeat=(match repeat with | Some r -> r | None -> 1); commandType=commandType; textObject=textObject }
  +
  +    let wait = [ getCommand (Some 1) DoNothing Nothing ]
   
       let parseKeys (state:VimState) =
           let keyList = state.keys// |> Seq.toList
  
positive.code: 
          let action =
              match state.mode, keyList with
              | InsertMode, [ "<esc>" ] -> run (SwitchMode NormalMode) Nothing
              | NormalMode, [ Movement m ] -> run Move m
              | NormalMode, [ FindChar m; c ] -> run Move (m c)
              | NormalMode, [ Action action; Movement m ] -> run action m
              | NormalMode, [ "u" ] -> run Undo Nothing
              | NormalMode, [ "d"; "d" ] -> run Delete WholeLine
              | NormalMode, [ Action action; FindChar m; c ] -> run action (m c)
              | NormalMode, [ Action action; "i"; BlockDelimiter c ] -> run action (InnerBlock c)
              | NormalMode, [ ModeChange mode ] -> run (SwitchMode mode) Nothing
              | NormalMode, ["g"; "d"] -> wait
              | _ -> None
          multiplier, action
  
      let handleKeyPress (state:VimState) (keyPress:KeyDescriptor) (editorData:TextEditorData) =
  
negative.code:             | c when keyPress.KeyChar <> '\000' -> state.keys @ [c |> string]
              | c when keyPress.KeyChar = '\000' ->
                  match keyPress.SpecialKey with
                  | SpecialKey.Escape -> state.keys @ ["<esc>"]
                  | _ -> state.keys
              | _ -> state.keys
          let newState = { state with keys=newKeys }
          let multiplier, action = parseKeys newState
          match multiplier, action with
          | _, actions ->
              let rec performActions actions' state handled =
                  match actions' with
                  | [] -> state, handled
                  | h::t ->
                      LoggingService.LogDebug (sprintf "%A %A" newKeys h)
                      if h.commandType <> DoNothing then
                          let newState = runCommand state editorData h
                          performActions t { newState with keys = [] } true
                      else 
                          newState, true
              performActions actions newState false
  
      // TODO: how can I make this immutable??
      let mutable vimState = { keys=[]; mode=NormalMode; desiredColumn=0; findChar=None }
  