protected static void setupTypes() {
    initCategory(TYPE_MILITANT ) ;
    initCategory(TYPE_MERCHANT ) ;
    initCategory(TYPE_AESTHETE ) ;
    initCategory(TYPE_ARTIFICER) ;
    initCategory(TYPE_ECOLOGIST) ;
    initCategory(TYPE_PHYSICIAN) ;
    for (Class baseClass : LoadService.loadPackage("src.game.base")) {
      //
      //  Firstly, we need to ensure that the class refers to a type of venue
      //  and has an appropriate constructor.
      if (! Installation.class.isAssignableFrom(baseClass)) continue ;
      final Constructor cons ;
      try { cons = baseClass.getConstructor(Base.class) ; }
      catch (Exception e) { continue ; }
      //
      //  Secondly, construct the building type with an appropriate instance.
      final InstallType type = new InstallType() ;
      type.buildClass = baseClass ;
      type.buildCons = cons ;
      refreshSample(type, null) ;
      allTypes.add(type) ;
      final String catName = type.sample.buildCategory() ;
      final Category category = categories.get(catName) ;
      if (category != null) category.types.add(type) ;
    }
    setupDone = true ;
  }