I think this would be useful as a public function