try to hide the internal api a bit