Refactor the codebase

Now 100% less offensive to my delicate sensibilities.
Add suffix to debug builds