task_3: metaprogramming