Refactored product collection interface to be traversable