make morph a private function