design patterns : intro++