protected ActorMind initAI() {
    final Fauna actor = this ;
    
    return new ActorMind(actor) {
      protected Behaviour createBehaviour() {
        final Choice choice = new Choice(actor) ;
        addChoices(choice) ;
        return choice.weightedPick() ;
      }
      
      protected void updateAI(int numUpdates) {
        super.updateAI(numUpdates) ;
      }
      
      protected void addReactions(Element seen, Choice choice) {
        if (seen instanceof Actor) choice.add(nextDefence((Actor) seen)) ;
      }
      
      //
      //  We install some default relationships with other animals-
      public float relationValue(Actor other) {
        if (other instanceof Fauna) {
          final Fauna f = (Fauna) other ;
          if (f.species == species) return 0.25f ;
          if (f.species.type == Species.Type.BROWSER) return 0 ;
          if (f.species.predator()) return -0.5f ;
        }
        return -0.25f ;
      }
    } ;
  }