refactoring ... testing function overloading ... diff return types