singleton implementation update