Rewritten a lot of code, started with a new design