restruct program