changes & refactoring