changed singleton strategy