all working, but messy.

need to implement camera control next