How to design patterns