expose public interface, and reset() and some other methods