Refactoring + decent project structure