setting up a facade pattern
workable facade design.
Merge branch 'experimental/facade' into develop