Used metaprogramming to define similar chained methods