changing the singleton implementation