implement PlanExecutor