adds more refactoring