first part to abstract ui from camera stuff