extract out turn data acquisition into seperate function with callbacks