reading: facade pattern and template pattern