Если я верно понял, вопрос глобальный и про опциональные зависимости. То есть "не сделать ли вместо требования интерфейса всегда опциональное требование и не расставить ли везде проверки на null?".
Выпилить события вообще проблем нет, если нужно, делаешь свой MiddlewareStack без событий и биндишь его на MiddlewareStackInterface. Делов на пять минут.