Cleaning up after the previous revision

I realized that the public interface was confusing after the previous
commit (which split out the delegate callbacks). This change cleans it
up so that the public interface is easier to use.