initial camera implementation