attempt 2 at exchange generation