Update 1.
Update 2.

Many changes, really getting somewhere now.