It works

bridge, decorator, template method