clean up and loop through scroll instead of using setInterval