public boolean actionTendSpecimen(Actor actor, Fauna fauna) {
    final float upgrade = station.structure.upgradeLevel(
      SurveyStation.CAPTIVE_BREEDING
    ) ;
    float success = 1 + (upgrade / 2f) ;
    if (actor.traits.test(XENOZOOLOGY, ROUTINE_DC, 1)) success++ ;
    if (actor.traits.test(DOMESTICS  , SIMPLE_DC , 1)) success++ ;
    float inc = success * 10f / World.STANDARD_DAY_LENGTH ;
    
    Item basis = Item.withReference(REPLICANTS, fauna) ;
    basis = station.stocks.matchFor(basis) ;
    if (basis == null) {
      basis = Item.with(REPLICANTS, fauna, inc / 5, 0) ;
      fauna.health.setupHealth(0, 1, 0) ;
      station.stocks.addItem(basis) ;
    }
    else if (basis.amount < 1) {
      ///I.say("Increment is: "+inc) ;
      station.stocks.addItem(Item.withAmount(basis, inc / 5)) ;
    }
    else {
      final Item eaten = Item.withAmount(CARBS, inc * 2) ;
      if (station.stocks.hasItem(eaten)) {
        station.stocks.removeItem(eaten) ;
      }
      else inc /= 5 ;
      ///I.say("Increment is: "+inc) ;
      float oldAge = fauna.health.ageLevel() ;
      fauna.health.setMaturity(oldAge + inc) ;
    }
    ///I.say("Age stage/upgrade: "+fauna.health.agingStage()+"/"+upgrade) ;
    
    if (fauna.health.agingStage() >= upgrade) {
      station.stocks.removeItem(basis) ;
      final World world = actor.world() ;
      fauna.assignBase(actor.base()) ;
      fauna.enterWorldAt(station, world) ;
      fauna.goAboard(station, world) ;
    }
    return true ;
  }