anchor.diff:              else world
   
           static let handlePlayerChange event world =
  -            let address = event.SubscriberAddress
  -            let playerNavigatingPath = isPlayerNavigatingPath address world
  -            let world = World.updateEntity (Entity.setEnabled playerNavigatingPath) (getHudHaltAddress address) world
  +            let gameplay = event.Subscriber : Screen
  +            let hudHalt = proxyHudHalt gameplay
  +            let playerNavigatingPath = isPlayerNavigatingPath gameplay world
  +            let world = hudHalt.SetEnabled playerNavigatingPath world
               (Cascade, world)
   
           static let handleTouchFeeler event world =
               let playerInput = TouchInput event.Data
  -            let world = tryRunPlayerTurn playerInput event.SubscriberAddress world
  +            let world = tryRunPlayerTurn playerInput event.Subscriber world
               (Cascade, world)
   
           static let handleDownDetail direction event world =
               let playerInput = DetailInput direction
  -            let world = tryRunPlayerTurn playerInput event.SubscriberAddress world
  +            let world = tryRunPlayerTurn playerInput event.Subscriber world
               (Cascade, world)
   
           static let handleNewGame gameplay world =
  
positive.code:         override dispatcher.Register gameplay world =
              world |>
                  (observe (EntityChangeEventAddress ->>- (proxyPlayer gameplay).EntityAddress) gameplay |> subscribe handlePlayerChange) |>
                  (observe (TouchEventAddress ->>- getHudFeelerAddress gameplay.ScreenAddress) gameplay |> filter isObserverSelected |> monitor handleTouchFeeler) |>
                  (observe (DownEventAddress ->>- getHudDetailUpAddress gameplay.ScreenAddress) gameplay |> filter isObserverSelected |> monitor (handleDownDetail Upward)) |>
                  (observe (DownEventAddress ->>- getHudDetailRightAddress gameplay.ScreenAddress) gameplay |> filter isObserverSelected |> monitor (handleDownDetail Rightward)) |>
                  (observe (DownEventAddress ->>- getHudDetailDownAddress gameplay.ScreenAddress) gameplay |> filter isObserverSelected |> monitor (handleDownDetail Downward)) |>
                  (observe (DownEventAddress ->>- getHudDetailLeftAddress gameplay.ScreenAddress) gameplay |> filter isObserverSelected |> monitor (handleDownDetail Leftward)) |>
                  (World.subscribe4 handleSelectTitle (SelectEventAddress ->>- Title.ScreenAddress) gameplay) |>
                  (World.subscribe4 handleSelectGameplay (SelectEventAddress ->>- gameplay.ScreenAddress) gameplay) |>
                  (World.subscribe4 handleClickSaveGame (ClickEventAddress ->>- getHudSaveGameAddress gameplay.ScreenAddress) gameplay) |>
                  (World.subscribe4 handleDeselectGameplay (DeselectEventAddress ->>- gameplay.ScreenAddress) gameplay)
negative.code:                 (List.ofSeq enemies)
                  []
  
          static let runCharacterReaction actionDescriptor (initiator : Entity) gameplay world =
              // TODO: implement animations
              if actionDescriptor.ActionTicks = ActionTicksMax then
                  let reactor =
                      proxyCharacterInDirection
                          (initiator.GetPosition world)
                          (initiator.GetCharacterAnimationState world).Direction
                          gameplay
                          world
                  let reactorDamage = initiator.GetPowerBuff world * 5.0f - reactor.GetShieldBuff world |> int
                  let reactorHitPoints = reactor.GetHitPoints world - reactorDamage
                  let world = reactor.SetHitPoints reactorHitPoints world
                  if reactor.GetHitPoints world <= 0 then
                      if reactor.GetName world = PlayerName
                      then World.transitionScreen Title world
                      else World.destroyEntity reactor world
                  else world
              else world
  
  