Added singleton implementation