added an abstract planner