extend with a module then use define_method

no need for redefine_method