slightly less messy binary op definition