First draft of Exchange class (untested)