source restructure