my last commit is not completely correct, there is a method which returns its singleton instance rest, developer should remember this each they have to use this menthod to instantiate it singleton object