Pattern languages of program design - Martin, Robert C. 1952- (Addison-Wesley, 1998)