add general copysign method