@todo: fix double rounding errors, turn distance to base value at constructor