use fn* typedef