better transitions plus optimisations