Better func name, cache_func -> run_once.