extract subclass building into a module
balance collection & op iface specs