protect private function