make service and application code more evented