https://medium.com/@AlexanderObregon/case-study-refactoring-a-java-project-from-start-to-finish-887170599bd