Metaprogramming DSL creation exercise from Nettuts