refactor scroll