fixed type inference