Learning basics of metaprogramming in order to dynamically create methods on the fly