some restruct
small restruct