private function