To facilitate community input into NIH Image and ImageJ, Rasband established a community driven development model with several key elements: 1) user driven need and request on list for Rasband 2) user driven need and another member of the community fixes and contributes back 3) user developer creates their own solution to their own need but then shares with community 4) user feedback on existing feature to either improve functionality or add new functionality. A single developer driven model where all code is developed by one person would have resulted in a monolithic program. While this would provide the simplicity of having only one way of doing things the breadth and depth of the solutions would be greatly attenuated. Rasband instead chose a more flexible approach that would allow users to add functionality on their own, but in a manner that would allow the functionality to be shared with others. This was accomplished through the use of macros and plugins.