Big commit

Lots of changes
I hope.