添加state和singleton