some cache optimisations