create a FunctionMap

add type variance