lots of optimisation- take largest steps possible given local refinement