implement CameraCapability + refactor Camera