Big Refactoring after codeReview