base class + config generator