optimisations
tidy up