fixes and optimisations