anchor.diff:      /// Sets the value; use when a return value is required to determine if the value has changed.
       member __.Set newValue = setValue newValue
   
  -    member internal __.Updated = internalUpdateEvent.Publish
  +    interface IFieldBacker with
  +        member __.Updated: IEvent<obj> = 
  +            internalUpdateEvent.Publish
  +
  +    member internal x.Updated = (x :> IFieldBacker).Updated
   
   /// Backs commands; note that the handlers take 'T option so use your pattern matching.
   and CommandBacker<'T>(canExececuteHandler: 'T option -> bool,
                         executeHandler: 'T option -> unit,
  -                      notifyOnFieldUpdate: FieldBacker<'T> list) as x =
  +                      notifyOnFieldUpdate: IFieldBacker list) as x =
   
       let canExecuteChanged = Event<_, _>()
       do
  
positive.code: 
  let mkField<'T> propertyExpr (initialValue: 'T) (obs: NotifyBase) = obs.MakeField (propertyExpr, initialValue)
  
  let mkCommand<'T> canExecuteHandler executeHandler (notifyOnFieldUpdate: FieldBacker<'T> list) (obs: NotifyBase) =
      
      obs.MakeCommand<'T> (canExecuteHandler, executeHandler, notifyOnFieldUpdate)
  
  
negative.code:     let mutable value = match initialValue with
                          | Some t -> t
                          | None -> Unchecked.defaultof<'T>
      let internalUpdateEvent = new Event<obj>()
      let propertyName = 
          match propertyExpr with
          | PropertyGet(_, propOrValInfo, _) -> propOrValInfo.Name
  