redesign singleton.