metaprogramming assignment modified