Optional small refactorings

I love this component you've built, it's got some excellent thinking in it and I've really enjoyed getting my head around how it works today. As part doing that I commented sections and made a few tweaks to help someone like me coming at it a fresh.

I wasn't going to send this over cos it has just been my journey through your code but, it's there if you like the changes...otherwise feel free to discard ;o)

I hope you don't mind I use some of the core thinking to build a slightly simpler horizontal infinite scroller for a project I'm working on.

Thanks

Dave