add ensure and iterate