Changed math.copysign to numpy.sign
Changed function names to be more logical
Removed cruft and made some methods private