This code keeps on diverging and we get bugs and fixes in one version but not the other. This should make things a bit more maintainable.