add some singleton design patter