refactored return