Added camera class

As per Birmingham's code, fixed it up and all that business