Add optimisations and fallback