From time to time I like to go back to the fundamentals and play around with basic concepts. This serves to keep myself sharp as well as provide an opportunity to explore some concepts in greater detail than what I was able to do previously. I was doing that recently with an implementation of an immutable list in JavaScript (similar to what you would find in immutablejs). Things were going well enough with my super basic implementation when I started thinking about how you would hide implementation details and how you could implement an iterator for my list data structure.