implemented user-defined binary operator