primitive type inference