optimise the efficiency