added unary not and negate