protect singleton design pattern