@Override
 public void destruct(Mission target) {
   getTr().removePropertyChangeListener(TRFactory.RUN_STATE, runStateListener);
   getMenuSystem().removeMenuItemListener(menuSelectionListener, PAUSE_MENU_PATH);
   getMenuSystem().removeMenuItem(PAUSE_MENU_PATH);
   pause.removePropertyChangeListener(controllerListener);
 }
 @Override
 public void apply(Mission mission) {
   setTr(Features.get(Features.getSingleton(), TR.class));
   setMenuSystem(Features.get(getTr().getRootWindow(), MenuSystem.class));
   final ControllerMapper mapper = Features.get(Features.getSingleton(), ControllerMapper.class);
   final ControllerInputs inputs = Features.get(mapper, ControllerInputs.class);
   pause = inputs.getControllerInput(PAUSE);
   this.mission = new WeakReference<Mission>(mission);
   pause.addPropertyChangeListener(controllerListener);
   getMenuSystem().addMenuItem(MenuSystem.MIDDLE, PAUSE_MENU_PATH);
   getMenuSystem().addMenuItemListener(menuSelectionListener, PAUSE_MENU_PATH);
   getTr().addPropertyChangeListener(TRFactory.RUN_STATE, runStateListener);
 }