I don't think this should be a public function.