some more design patterns