metaprogramming examples added