simple metaprogramming example