expanded core to use plugin, exchange events