overloaded functions correctly return