Project house-keeping, refactoring and reorganizing
This MR contains a huge change because we started working on it in a separate repository. It contains mainly formatting changes, as well as dependency updates and reorganization of some of the components.