ADD: more meta programming
FIX: some code changes
Merge pull request #1 from ADone/metaprogramming

Metaprogramming