private void applyBackgrounds(Human actor) {
    Background root = vocation ;
    if (birth == null) {
      final Batch <Float> weights = new Batch <Float> () ;
      for (Background v : Background.OPEN_CLASSES) {
        weights.add(ratePromotion(root, actor)) ;
      }
      birth = (Background) Rand.pickFrom(
        Background.OPEN_CLASSES, weights.toArray()
      ) ;
    }
    if (homeworld == null) {
      final Batch <Float> weights = new Batch <Float> () ;
      for (Background v : Background.ALL_PLANETS) {
        weights.add(ratePromotion(root, actor)) ;
      }
      homeworld = (Background) Rand.pickFrom(
        Background.ALL_PLANETS, weights.toArray()
      ) ;
    }
    applyVocation(homeworld, actor) ;
    applyVocation(birth    , actor) ;
    applyVocation(vocation , actor) ;
    setupAttributes(actor) ;
  }