Lots of updates.

Made the model much better in this commit.