type inference for abs & abs2