adding optimiser