Maybe this interface is better?
```let gen_return fuction_name args = ...```