We propose a formal framework for extending a class-based language, equipped with a given class composition mechanism, to allow programmers to define their own derived composition operators. These definitions can exploit the full expressive power of the underlying computational language. The extension is obtained by two simple steps. First, meta-expressions, that is, (expressions denoting) class expressions, are added to conventional expressions. Then, such meta-expressions can appear as class definitions in the class table. Extended class tables are reduced to conventional ones by a process that we call compile-time execution, which evaluates these meta-expressions. This mechanism, which is trivial in itself, poses the non-trivial problem of guaranteeing soundness, that is, ensuring that the conventional class table, obtained by compile-time execution, is well-typed (in the conventional sense). This problem can be tackled in many ways. In this paper, we illustrate a lightweight solut...