studying design patterns