Refactory(Decorator Pattern)