all private function to protected - usefull for extension