Uses iterators for ranges
Implement slicing support