singleton design pattern added