move report into private function