replace EE with plain callbacks
more generic execution, allow for async cleanup