anchor.diff:                  ctrl.Header.FontStyle <-
                     if isCompleted then FontStyles.Italic else FontStyles.Normal })
   
  -             Stream.ofObservableOnMain ctrl.MouseEnter
  -             |> Stream.subscribeJob (fun _ -> onMain {
  -                ctrl.Remove.Visibility <- Visibility.Visible })
  -             Stream.ofObservableOnMain ctrl.MouseLeave
  -             |> Stream.subscribeJob (fun _ -> onMain {
  -                ctrl.Remove.Visibility <- Visibility.Hidden })
  +             Stream.merge
  +              (Stream.ofObservableOnMain ctrl.MouseEnter |> Stream.mapConst +1)
  +              (Stream.ofObservableOnMain ctrl.MouseLeave |> Stream.mapConst -1)
  +             |> Stream.scanFromFun 0 (+)
  +             |> Stream.subscribeJob (fun n -> onMain {
  +                ctrl.Remove.Visibility <-
  +                  if 0 < n then Visibility.Visible else Visibility.Hidden })
   
                Stream.ofObservableOnMain ctrl.Remove.Click
                |> Stream.subscribeJob (fun _ ->
                   Stream.Var.get itemsVar
  -                |> List.filter (fun item' -> item' <> item)
  +                |> List.filter ((<>) item)
                   |> Stream.Var.set itemsVar)
   
                ctrl
   
  -           let itemToCtrl = Dictionary<_, _> ()
  -           oldItemsAndCtrls |> List.iter (fun (item, ctrl) -> itemToCtrl.[item] <- ctrl)
  +           let itemToCtrl = Dictionary.create oldItemsAndCtrls
   
              return newItems
                     |> List.map (fun item ->
                        (item,
  -                      match itemToCtrl.TryGetValue item with
  -                       | (false, _) -> newCtrl item
  -                       | (_, ctrl) -> ctrl)) })
  +                      match itemToCtrl.TryGet item with
  +                       | None -> newCtrl item
  +                       | Some ctrl -> ctrl)) })
   
         let isAny _ = true
  -      let isCompleted it = Stream.Var.get it.IsCompleted
  -      let isActive it = isCompleted it |> not
  +      let isCompleted item = Stream.Var.get item.IsCompleted
  +      let isActive item = isCompleted item |> not
   
         let filter =
           let filterOn (button: Button) pred =
  
positive.code: 
  [<AutoOpen>]
  module internal Util =
    let setupWhen (onEvent: IEvent<_, _>) =
      let mainCtx = ivar ()
      let handler =
  
negative.code:          onMain { main.EnterHeader.Text <- "" } >>.
           let item = {IsCompleted = Stream.Var.create false
                       Header = Stream.Var.create header}
           Stream.Var.get itemsVar @ [item]
           |> Stream.Var.set itemsVar)
  
        changedCompleted
  