one class per subclass