user-defined unary and binary operations