rework, rename, unify metaprogramming facilities