Redesigned using Decorator pattern