completed design patterns