restruct source code