use singleton like pattern
use singleton like pattern