home work. metaprogramming