compound design pattern