protected static void initContactTask(BaseUI UI) {

    final Sprite flagSprite = CONTACT_MODEL.makeSprite() ;
    UI.beginTask(new TargetTask(UI, CONTACT_ICON) {
      
      boolean validPick(Target pick) {
        if (! (pick instanceof Actor || pick instanceof Venue)) return false ;
        if (! ((Element) pick).visibleTo(UI.played())) return false ;
        if (((Actor) pick).base() == UI.played()) return false ;
        return true ;
      }
      
      void previewAt(Target picked, boolean valid) {
        previewFlag(UI, flagSprite, picked, valid) ;
      }
      
      void performAt(Target picked) {
        final Mission mission = new ContactMission(
          UI.played(), (Actor) picked
        ) ;
        UI.played().addMission(mission) ;
        UI.selection.pushSelection(mission, true) ;
      }
    }) ;
  }