more solver optimisations