public api interface