ticket:4 fixed scrolling issues
ticket:4 reimplemented using singleton