Unfortunate modification to allow external advance() implementation.