To attempt to do two things with the one function is to write a bloated function. Better to have two functions and call them separately. To have an application that does more than one thing is equally bloated, therefore programs (and components and objects and methods) should have One True Purpose, and from this will follow all of the rest. For a method, we could say 'This method adds the parameter to the stream' For an object, we could say 'This object writes streams to files' For a component, we could say 'This component implements a persistence layer' For an application, we could say 'This application manages our customer base' If you only look at the features that people want, you can miss the forest for the trees. (Not that the trees are not important, but they must serve the One True Purpose.) -- NickArgall ---- I would agree, except that you used the word 'manages' in your last example. People frequently use that word to encompass very bloated functionality. E.g.: "It manages our customer base, and it does it via a secure bla-2-bla enabled web interface, with specialized UIs for customers, accounting, and management." So make sure you can describe the functionality without using the word 'manages'. --HaskoHeinecke