generate func
bug fi