working in metaprogramming techniques