refactor camera into its own service