potential metaprogramming solution