In RefactoringImprovingTheDesignOfExistingCode, MartinFowler recommends something like this: * Put methods where they belong * When this fails, put them in the next best place and put a comment above them that says, "Foreign Method". If you get in the habit of noticing what classes have what responsibilities, you'll often come across cases where this seems to be your only choice. For example, when dealing with a library beyond your control. MartinFowler goes on to recommend: * If the number of ForeignMethod''''''s grows large enough, you might want to IntroduceLocalExtension. ''[My copy of _Refactoring_ isn't handy -- can someone please double-check this stuff for me?]''