Moved from package-by-layer to package-by-feature structure and
refactored some code