anchor.diff:  
                ctrl
   
  -           return items
  -                  |> List.map (fun item -> (item, newCtrl item)) })
  +           let itemToCtrl = Dictionary<_, _> ()
  +           oldItemsAndCtrls |> List.iter (fun (item, ctrl) -> itemToCtrl.[item] <- ctrl)
  +
  +           return newItems
  +                  |> List.map (fun item ->
  +                     (item,
  +                      match itemToCtrl.TryGetValue item with
  +                       | (false, _) -> newCtrl item
  +                       | (_, ctrl) -> ctrl)) })
   
         let filter =
           let filterOn (button: Button) pred =
  
positive.code: 
        let itemsAndCtrls =
          Stream.Var.tap itemsVar
          |> Stream.mapJob (fun items -> onMain {
             let newCtrl item =
               let ctrl = ToDo.UI.ItemControl ()
  
  
negative.code:       |> queue
  
        Stream.ofObservableOnMain main.EnterHeader.KeyUp
        |> Stream.chooseJob (fun e -> onMain {
           return match main.EnterHeader.Text with
                   | _ when e.Key <> Key.Enter -> None
                   | "" -> None
                   | header -> Some header })
        |> Stream.filterFun (fun header ->
           Stream.Var.get itemsVar
           |> List.forall (fun item -> item.Header <> header))
        |> Stream.iterJob (fun header -> onMain {
           let item = {IsCompleted = Stream.Var.create false; Header = header}
           main.EnterHeader.Text <- ""
           return! (Stream.Var.get itemsVar @ [item])
                   |> Stream.Var.set itemsVar })
  