mostly reworked to match the new API
adds list & each methods
2.0.0