templates mean we can quickly change precision of calcs