restruct singleton