major refactoring round 2