fix #3: add scroll event