move to class-based singletons