Yet more refactoring. Added camera class