Iterator pattern and composite pattern, starting state pattern