begin camera abstraction