added redefine outer method