added behavioral design patterns