new private functions