The discussion of "Flexibility and Complexity" and "Flexible versus Reusable" answer my long question of how to have flexibility code with simple design. http://www.artima.com/intv/flexplexP.html Another interview - http://www.infoq.com/presentations/modifiability-fowler