singleton use enum