Exercise 1 metaprogramming