anchor.diff:               battle.DeselectEvent =>! FinalizeBattle
                battle.OutgoingStartEvent =>! FadeSong
                battle.UpdateEvent => Tick] @
  -             BattleDispatcher.inputBindings 0 @
  -             BattleDispatcher.inputBindings 1 @
  -             BattleDispatcher.inputBindings 2
  +             inputBindings 0 @
  +             inputBindings 1 @
  +             inputBindings 2
   
           override this.Message (message, model, _, world) =
               match message with
               | ReadyCharactersM ->
                   let time = World.getTickTime world
  -                let model = BattleDispatcher.updateCharacters (fun character -> { character with CharacterAnimationState = (CharacterAnimationState.setCycle (Some time) ReadyCycle) character.CharacterAnimationState }) model
  +                let model = updateCharacters (fun character -> { character with CharacterAnimationState = (CharacterAnimationState.setCycle (Some time) ReadyCycle) character.CharacterAnimationState }) model
                   just model
               | PoiseCharactersM ->
                   let time = World.getTickTime world
  -                let model = BattleDispatcher.updateCharacters (fun character -> { character with CharacterAnimationState = (CharacterAnimationState.setCycle (Some time) PoiseCycle) character.CharacterAnimationState }) model
  +                let model = updateCharacters (fun character -> { character with CharacterAnimationState = (CharacterAnimationState.setCycle (Some time) PoiseCycle) character.CharacterAnimationState }) model
                   just model
               | CelebrateCharactersM outcome ->
                   let time = World.getTickTime world
                   let model =
                       if outcome
  -                    then BattleDispatcher.updateAllies (fun character -> { character with CharacterAnimationState = (CharacterAnimationState.setCycle (Some time) CelebrateCycle) character.CharacterAnimationState }) model
  -                    else BattleDispatcher.updateAllies (fun character -> { character with CharacterAnimationState = (CharacterAnimationState.setCycle (Some time) CelebrateCycle) character.CharacterAnimationState }) model
  +                    then updateAllies (fun character -> { character with CharacterAnimationState = (CharacterAnimationState.setCycle (Some time) CelebrateCycle) character.CharacterAnimationState }) model
  +                    else updateAllies (fun character -> { character with CharacterAnimationState = (CharacterAnimationState.setCycle (Some time) CelebrateCycle) character.CharacterAnimationState }) model
                   just model
               | AdvanceCharactersM ->
  -                let model = BattleDispatcher.updateCharacters (fun character -> { character with ActionTime = character.ActionTime + Constants.Battle.ActionTimeInc }) model
  +                let model = updateCharacters (fun character -> { character with ActionTime = character.ActionTime + Constants.Battle.ActionTimeInc }) model
                   just model
               | AttackCharacterM (sourceIndex, targetIndex) ->
                   let time = World.getTickTime world
  -                let source = BattleDispatcher.getCharacter sourceIndex model
  -                let target = BattleDispatcher.getCharacter targetIndex model
  -                let model = BattleDispatcher.updateCharacter (fun character -> { character with CharacterAnimationState = (CharacterAnimationState.setCycle (Some time) AttackCycle) character.CharacterAnimationState }) sourceIndex model
  +                let source = getCharacter sourceIndex model
  +                let target = getCharacter targetIndex model
  +                let model = updateCharacter (fun character -> { character with CharacterAnimationState = (CharacterAnimationState.setCycle (Some time) AttackCycle) character.CharacterAnimationState }) sourceIndex model
                   let model =
  -                    BattleDispatcher.updateCharacter (fun character ->
  +                    updateCharacter (fun character ->
                           let state = character.CharacterState
                           let rom = Simulants.Game.GetModel world
                           let power = source.CharacterState.ComputePower rom
  
positive.code:                 let world = World.hintRenderPackageDisuse Assets.BattlePackage world
                  just (World.hintAudioPackageDisuse Assets.BattlePackage world)
              | ResetCharacter characterIndex ->
                  let character = BattleDispatcher.getCharacter characterIndex model
                  let world =
                      if character.CharacterState.IsAlly then
                          let index = character.CharacterState.PartyIndex
  
negative.code:                         then (Command (IndexedCommand (RegularMenuShow, ally.CharacterState.PartyIndex)) :: commands, model)
                          else (commands, model))
                          ([], model)
                          (getAllies model)
                  let (enemySignals, model) =
                      List.fold (fun (commands, model) enemy ->
                          let enemyIndex = EnemyIndex enemy.CharacterState.PartyIndex
                          let allies = getAllies model
                          let allyIndex = (Random ()).Next allies.Length
                          let attack = { Action = Attack; Source = enemyIndex; TargetOpt = Some (AllyIndex allyIndex) }
                          if enemy.ActionTime = Constants.Battle.ActionTime then
  