improved camera class