camera refactored and merging new code into the building branch