Are there any optimisations I have missed in the final code in my prev post?