Major structural changes, this commit is to bring the project to a clean state before making any further changes.