Refactors PlanExecutor into event-based approach