Design patterns and techniques