let's determine this for sure. if we can, i think we should hide all of this from the public interface