final metaprogramming changes