Actually that design of mine was bad because it creates a long chain of virtual calls since setStep just wraps the buffer object and creates a new object every time. Here's an alternate implementation: https://gist.github.com/950647