add design pattern decorator