First major commit. Lots of stuff. Not going to mention them, too lazy.