design patterns finished