Big commit, tons of stuff changed, and it's still the first part only :D