protected Behaviour getNextStep() {
    I.sayAbout(actor, "Getting next audit step... "+this.hashCode()) ;
    I.sayAbout(actor, "Stage was: "+stage) ;
    
    if (stage == STAGE_EVAL) {
      if (audited == null && Rand.num() > (Math.abs(balance) / 1000f)) {
        audited = nextToAuditFor(actor) ;
      }
      if (audited != null) stage = STAGE_AUDIT ;
      else stage = STAGE_REPORT ;
    }
    I.sayAbout(actor, "Stage is now: "+stage+", audited: "+audited) ;
    
    if (stage == STAGE_AUDIT) {
      final Action audit = new Action(
        actor, audited,
        this, "actionAudit",
        Action.TALK, "Auditing "+audited
      ) ;
      final Tile e = audited.mainEntrance() ;
      if (e == null || e.blocked()) {
        audit.setMoveTarget(Spacing.nearestOpenTile(audited.origin(), actor)) ;
      }
      return audit ;
    }
    if (stage == STAGE_REPORT) {
      final Action report = new Action(
        actor, actor.mind.work(),
        this, "actionFileReport",
        Action.TALK, "Filing Report"
      ) ;
      return report ;
    }
    return null ;
  }