Design patterns by Craig Larman, Erich Gamma & Ralph Johnson