Add more tests and rewrite List iterator to use the continuation pattern