Optimisation and fixes