public Behaviour nextStepFor(Actor actor) {
    
    final IntelMap map = base.intelMap ;
    Tile lookedAt = null ;
    float bestRating = 0 ;
    
    //
    //  TODO:  Try just picking an unexplored tile at random?
    
    for (Tile t : inRange) if (! t.blocked()) {
      final float fog = map.fogAt(t) ;
      float rating = fog < 1 ? 1 : 0 ;
      
      for (Role role : this.roles) if (role.applicant != actor) {
        Target looks = role.applicant.targetFor(Exploring.class) ;
        if (looks == null) looks = role.applicant ;
        rating *= (10 + Spacing.distance(actor, looks)) / 10f ;
      }
      if (rating > bestRating) {
        lookedAt = t ;
        bestRating = rating ;
      }
    }
    if (lookedAt == null) {
      done = true ;
      return null ;
    }
    
    final Exploring e = new Exploring(actor, base, lookedAt) ;
    //e.priorityMod = actor.mind.greedFor(rewardAmount(actor)) * ROUTINE ;
    return e ;
  }