should not change global function.