design patterns (46)