improved singleton approach
improved singleton approach