Add a ton of features and fix a whole bunch of stuff