public Behaviour jobFor(Actor actor) {
    if ((! structure.intact()) || (! personnel.onShift(actor))) return null ;
    final Choice choice = new Choice(actor) ;
    
    final int linkMod = (int) (5 * (1 - stocks.shortagePenalty(DATALINKS))) ;
    
    if (actor.vocation() == Background.AUDITOR) {
      final Venue toAudit = Audit.nextToAuditFor(actor) ;
      if (toAudit != null) {
        final Audit a = new Audit(actor, toAudit) ;
        a.checkBonus = ((structure.upgradeLevel(FILE_SYSTEM) - 1) * 5) / 2 ;
        a.checkBonus += linkMod ;
        choice.add(a) ;
      }
    }
    
    return choice.weightedPick() ;
  }