Completely rewrote calculator because we could