camera class implementation