Added camera class, substantial changes