compisiton pattern