add Decortator pattern and Facade pattern