performance improvements
further optimisations