added abstact classes and integrated them with exchanges