created facade pattern implementation