Moved the iterator nonsense into storage too, it needs multi-methoding
Most of the tests now pass with the in memory storage