huge amount of optimisations