actually implement Iterator and Closeable, though