re-implement checking polymorphic binary/unary operations