Even if we agree that something is bad, does not mean that my code base is not full of it and i (or my client) has not the money/time to rewite that code what would make a next release a showstopper. there is a big difference between removing something and having all this states. What we really need is the possibility of a setting in the admin that allows to throw a exception if you use “deprecated/avoided/hidden” functionality, so you can check very fast if you use flagged features and of course that should be always enabled in the development enviroment.