use generate-function
1.4.4