add singleton.h