metaprogramming hometask