refactor to ExecutionStrategy