optimisations - final version