distinguish between different upper bounds for differnet data types