ton suggested that since the shell is written in C++, IShell­Folder should have been an abstract class, and then it could have used techniques like exceptions and Inversion of Control. Okay, first of all, I'm not sure how Inversion of Control is something that requires C++, so I'm going to leave that aside. Second of all, who says ...