anchor.diff:                  let world = World.setScreenEntityTreeNp entityTree screen world
   
                   // register entity if needed
  -                if isNew then
  -                    let dispatcher = World.getEntityDispatcherNp entity world : EntityDispatcher
  -                    let facets = World.getEntityFacetsNp entity world
  -                    let world = dispatcher.Register (entity, world)
  -                    let world = List.fold (fun world (facet : Facet) -> facet.Register (entity, world)) world facets
  -                    let world = World.updateEntityPublishUpdates entity world
  -                    let eventTrace = EventTrace.record "World" "addEntity" EventTrace.empty
  -                    World.publish () (ftoa<unit> !!"Entity/Add" ->- entity) eventTrace entity world
  -                else world
  +                let world =
  +                    if isNew then
  +                        let dispatcher = World.getEntityDispatcherNp entity world : EntityDispatcher
  +                        let facets = World.getEntityFacetsNp entity world
  +                        let world = dispatcher.Register (entity, world)
  +                        let world = List.fold (fun world (facet : Facet) -> facet.Register (entity, world)) world facets
  +                        let world = World.updateEntityPublishUpdates entity world
  +                        let eventTrace = EventTrace.record "World" "addEntity" EventTrace.empty
  +                        World.publish () (ftoa<unit> !!"Entity/Add" ->- entity) eventTrace entity world
  +                    else world
  +
  +                // publish change event for every property
  +                World.publishEntityChanges entity oldWorld world
   
               // handle failure
               else failwith ^ "Adding an entity that the world already contains at address '" + scstring entity.EntityAddress + "'."
  
positive.code:             let world = World.updateGroupStateWithoutEvent updater group world
              World.publishGroupChange propertyName group oldWorld world
  
          /// Query that the world contains a group.
          static member containsGroup group world =
              Option.isSome ^ World.getOptGroupState group world
  
negative.code:             let world = World.updateEntityStateWithoutEvent updater entity world
              let world = World.updateEntityInEntityTree entity oldWorld world
              World.publishEntityChange propertyName entity oldWorld world
  
          static member private publishEntityChanges entity oldWorld world =
              let entityState = World.getEntityState entity world
              let properties = World.getProperties entityState
              List.fold (fun world (propertyName, _) -> World.publishEntityChange propertyName entity oldWorld world) world properties
  
          /// Query that the world contains an entity.
          static member containsEntity entity world =
  