Completely redesign most of the project whilst still keeping most of the API backwards-compatible