enum approach of singleton