Adding singleton pattern and defining sinle entry root point
Merge branch 'release/2.2.0'