optimisations, fixes