better scrollspy, closes #22