In FOAM (the Feature-Oriented Active Modeler) we replace classes with Models, which are just collections of Axioms. There are pre-built Axiom types for standard things like methods and properties, but also for things like imports, exports, traits, listeners, topics, templates, actions, inner-models/classes, etc. Axioms are themselves modeled, so you can create new types as required. In the end, you still end up with a class, but it's defined/built with an extensible composition of objects rather than by a more limited and static class definition.