public Behaviour jobFor(Actor actor) {
    if ((! structure.intact()) || (! personnel.onShift(actor))) return null ;
    final Choice choice = new Choice(actor) ;
    //
    //  Return a hunting expedition.   And... just explore the place.  You'll
    //  want to make this a bit more nuanced later.
    if (still != null && ! still.destroyed()) {
      final Delivery d = Deliveries.nextDeliveryFor(
        actor, still, still.services(), 5, world
      ) ;
      choice.add(d) ;
      final Actor p = Hunting.nextPreyFor(actor, true) ;
      if (p != null) {
        final Hunting h = Hunting.asProcess(actor, p, still) ;
        choice.add(h) ;
      }
    }
    
    final Tile t = Exploring.getUnexplored(actor.base().intelMap, actor) ;
    if (t != null) {
      I.say("TILE FOUND IS: "+t) ;
      final Exploring e = new Exploring(actor, actor.base(), t) ;
      e.priorityMod = Plan.ROUTINE ;
      choice.add(e) ;
    }
    //else I.say("NOTHING LEFT TO EXPLORE?") ;
    
    if (structure.upgradeLevel(CAPTIVE_BREEDING) > 0) {
      final Fauna toTend = AnimalHusbandry.nextHandled(this) ;
      if (toTend != null) {
        choice.add(new AnimalHusbandry(actor, this, toTend)) ;
      }
    }
    
    final SensorPost newPost = SensorPost.locateNewPost(this) ;
    if (newPost != null) {
      final Action collects = new Action(
        actor, newPost,
        this, "actionCollectSensor",
        Action.REACH_DOWN, "Collecting sensor"
      ) ;
      collects.setMoveTarget(this) ;
      final Action plants = new Action(
        actor, newPost.origin(),
        this, "actionPlantSensor",
        Action.REACH_DOWN, "Planting sensor"
      ) ;
      plants.setMoveTarget(Spacing.pickFreeTileAround(newPost, actor)) ;
      choice.add(new Steps(actor, this, Plan.ROUTINE, collects, plants)) ;
    }
    
    return choice.weightedPick() ;
  }