design pattern:decorator...