Some work on iterator method, it's a bit strange at the moment