Camera cleanup and basic functionality

Finished implementing rough functionality of the camera, still a lot of
fine tuning that needs to happen.