What? Why are you merging the standard initialiser and the shared instance creation? This should be separated in two different methods, where the init method initializes an object that is already allocated, and the sharedInstance method creates a shared object.