refactor Camera