more buffer exchange fixes, better but not quite there yet