made use of singleton design pattern