smart_methods helps to define class and instance methods using pretty DSL