private functions