anchor.diff:          | _ -> ()
       }
   
  -    member private this.Create nodeType name model =
  -        try
  -            fileSys.Create nodeType (model.Path.Join name)
  -            this.OpenPath model.Path (SelectName name) model
  -            model |> this.PerformedAction (CreatedItem model.SelectedNode)
  -        with | ex ->
  -            let action = CreatedItem { Path = model.Path; Name = name; Type = nodeType;
  -                                       Modified = None; Size = None; IsHidden = false; IsSearchMatch = false }
  -            model |> MainStatus.setActionExceptionStatus action ex
  -
  -    member this.Rename node newName model =
  -        let action = RenamedItem (node, newName)
  -        try
  -            let newPath = node.Path.Parent.Join newName
  -            fileSys.Move node.Path newPath
  -            this.OpenPath model.Path (SelectName newName) model
  -            model |> this.PerformedAction action
  -        with | ex -> model |> MainStatus.setActionExceptionStatus action ex
  +    member private this.Create = MainHandler.create fileSys.Create this.OpenPath
  +    member this.Rename = MainHandler.rename fileSys.Move this.OpenPath
   
       member this.StartMove model =
           match model.SelectedNode.Type with
  
positive.code:                     |> Option.coalesce model.Cursor
                  | KeepSelect -> keepCursor)
              model.Status <- None
          with | ex -> model.Status <- Some <| StatusType.fromExn "open path" ex
  
      let back openPath (model: MainModel) =
          match model.BackStack with
  
negative.code:             model.Status <- MainStatus.runningAction action model.PathFormat
              do! runAsync (fun () -> fileSysFunc node.Path)
              this.Refresh model
              model |> MainHandler.performedAction action
          with | ex -> model |> MainStatus.setActionExceptionStatus action ex
      }
  
      member this.Undo model = async {
          match model.UndoStack with
  