add decorator and composite