This is exactly the kind of conversion work that I hate. There are thousands of references to this class, passed around in numerous methods. Instead of storing an instance of class X, we are now storing an immutable cached pointer to a shared instance of class X, which now needs to be passed around to all of the numerous methods.
I have hidden away most of the constructors for class X and have overridden and made private the assignment operator so that some damn fool line of existing code does not overwrite the contents of the cached pointer and destroy everyone. (Fools! I will destroy you all! Ask me how!)
But it is the most tedious sort of work and it takes forever.
Of course, everyone is waiting for me to finish it. :)