adding in 'precision' implementation