works through entire thing