broke the image aquisition process into 3 methods to allow asynchronous control, 'take_photo' reimplemented from these components.