exercise for metaprogramming