clean up + optimisation