Major update. Nearly finished some things. This is good for testing now.