improved run algorithm
store unit conversions as constants
request new run if returned run is out of range
if all returned runs are out of tolerance then return run with min error
reduce number of route requests
keep track of leg order