add optimisation