added more design patterns