hide internal function