Refactoring sprint#1 refactoring almost finished