add iteration support. Closes #10