Is this really a public interface? Seems like it is only  used internally by the library