working except rounding and overflow, rounding in progress, don't pull from this commit