redesign with decorator 4