finished command pattern
finished facade pattern