Giant commit

Adds a lot of the work I've forgot to add