refactored the whole thing to make additional exchanges much easier to add