added negate method and tests