A few months of on-and-off work, and being lazy with version control. Sorry about that.