not quite done 23; need to avoid passing generator