some conditional stuff
Binaryop type inference