anchor.diff:              refWorld := addScreen Test.ScreenModelAddress screen !refWorld
               refWorld := set (Some Test.ScreenModelAddress) !refWorld worldOptSelectedScreenModelAddressLens
               refWorld := addGroup Test.GroupModelAddress group !refWorld
  -            refWorld := subscribe DownMouseLeftAddress [] (beginDrag form worldChangers refWorld) !refWorld
  -            refWorld := subscribe UpMouseLeftAddress [] (endDrag form) !refWorld
  +            refWorld := subscribe DownMouseLeftAddress [] (beginEntityDrag form worldChangers refWorld) !refWorld
  +            refWorld := subscribe UpMouseLeftAddress [] (endEntityDrag form) !refWorld
  +            refWorld := subscribe DownMouseCenterAddress [] (beginCameraDrag form worldChangers refWorld) !refWorld
  +            refWorld := subscribe UpMouseCenterAddress [] (endCameraDrag form) !refWorld
               Right !refWorld
   
       // TODO: remove code duplication with below
  
positive.code: 
  type WorldChangers = WorldChanger List
  
  type DragState =
      | DragNone
      | DragPosition of Vector2 * Vector2 * Address
      | DragRotation of Vector2 * Vector2 * Address
  
  type EditorState =
      { DragState : DragState
        PastWorlds : World list
        FutureWorlds : World list
        Clipboard : (EntityModel option) ref }
  
negative.code:                     let entity = get entityModel entityLens
                      let entityModelAddress = groupModelAddress @ [Lun.make entity.Name]
                      let entityModelTransform = getEntityModelTransform (Some world_.Camera) entityModel
                      let dragState = DragEntityPosition (entityModelTransform.Position + world_.MouseState.MousePosition, world_.MouseState.MousePosition, entityModelAddress)
                      let editorState_ = world_.ExtData :?> EditorState
                      let editorState_ = { editorState_ with DragEntityState = dragState }
                      let world_ = { world_ with ExtData = editorState_ }
                      let world_ = pushPastWorld pastWorld world_
                      refWorld := world_ // must be set for property grid
  