avoid premature optimisations