more code optimisation