Refactored Everything

I took @Camwyn's changed, replaced them with mine, and updated everything. You all now need to rebase your develop branches to this commit since it's a new, clean base.