exercise 1 metaprogramming