Metaprogramming & Object-Oriented-Programming