actually runs the exchange! had to bind the appropriate member function to play nice with for_each