fix a bug that functions can't receive arguments passed as value