updated optimisation