refactored shuffler, added Iterator