separate subclasses and add __all__