refactored w John