use metaprogramming to normalize