public Behaviour jobFor(Actor actor) {
    //if ((! structure.intact()) || (! personnel.onShift(actor))) return null ;
    final Choice choice = new Choice(actor) ;
    //
    //  See if any new datalinks need to be installed or manufactured-
    final Delivery baseC = Deliveries.nextCollectionFor(
      actor, this, new Service[] { CIRCUITRY }, 5, null, world
    ) ;
    if (baseC != null) {
      choice.add(baseC) ;
    }
    final Manufacture m = stocks.nextManufacture(
      actor, CIRCUITRY_TO_DATALINKS
    ) ;
    if (m != null) {
      choice.add(m) ;
    }
    final Manufacture o = stocks.nextSpecialOrder(actor) ;
    if (o != null) {
      choice.add(o) ;
    }
    //
    //  Check to see if any datalinks require delivery- if so, key them to the
    //  client first.
    
    Batch <Venue> clients = new Batch <Venue> () ;
    world.presences.sampleFromKey(this, world, 5, clients, Holding.class) ;
    final Delivery baseD = Deliveries.nextDeliveryFor(
      actor, this, services(), clients, 1, world
    ) ;
    I.sayAbout(this, "Next base delivery is: "+baseD) ;
    if (baseD != null) {
      final Item custom = Item.withReference(DATALINKS, baseD.destination) ;
      if (! stocks.hasItem(custom)) {
        final Action personalise = new Action(
          actor, baseD.destination,
          this, "actionKeyDatalink",
          Action.BUILD, "Personalising Datalinks"
        ) ;
        personalise.setMoveTarget(this) ;
        personalise.setPriority(Action.ROUTINE) ;
        choice.add(personalise) ;
      }
      else choice.add(new Delivery(custom, this, baseD.destination)) ;
    }
    //
    //  Check to see if any catalogues require indexing-
    final Item indexed = nextToCatalogue() ;
    if (indexed != null) {
      final Action catalogues = new Action(
        actor, this,
        this, "actionCatalogue",
        Action.REACH_DOWN, "Indexing catalogue for "+indexed.type
      ) ;
      catalogues.setPriority(Action.CASUAL) ;
      choice.add(catalogues) ;
    }
    if (choice.size() > 0) return choice.weightedPick() ;
    //
    //  Otherwise, just hang around and help folks with their inquiries-
    return new Supervision(actor, this) ;
  }