added design pattern exercise