upper bound on output type for map