event system now uses an interface and fluent api.