apparently scrollTop is expensive; do it less