diff --git a/hunks/view.js b/hunks/view.js
index 6f6f0a5dba92b8f23bb262a8010cb585705648ee..5b0a72e4750453739498c430c0da1e053ab73f88 100644
--- a/hunks/view.js
+++ b/hunks/view.js
@@ -825,9 +825,9 @@ function View() {
     // now we wipe,
     return new Promise(async (resolve, reject) => {
       // we want to run this down levels,
-      for(let df of this.defs){
-        if(df.type == 'link'){
-          if(df.interior()) await df.interior().refresh()
+      for (let df of this.defs) {
+        if (df.type == 'link') {
+          if (df.interior()) await df.interior().refresh()
         }
       }
       // wipe ya docs, and ask yonder manager for a complete description
@@ -1059,7 +1059,7 @@ function View() {
   }
 
   let mergeLinkList = (patch, debug) => {
-    return new Promise((resolve, reject) => {
+    return new Promise(async (resolve, reject) => {
       let nh = patch.hunks.length
       let recursor = async (n) => {
         // we want to walk the list of outputs in the patch, and reconn.
@@ -1081,7 +1081,7 @@ function View() {
             // here is case to put error handling in the ll, at addlink,
             // then just ignore the ones we miss ...
             try {
-              this.requestAddLinkLikeACaveman(n, op, cn[0], cn[1])
+              await this.requestAddLinkLikeACaveman(n, op, cn[0], cn[1])
             } catch (err) {
               console.error('passing by this erroneous link-addition during link-list merging')
               console.error(err)
@@ -1101,18 +1101,30 @@ function View() {
   this.reinstate = async (system, debug) => {
     // ensure we are up-to-date w/ current state,
     await this.refresh()
-    return new Promise((resolve, reject) => {
-      mergeHunkList(system, debug).then(() => {
-        console.log('resolved hunk list, links now')
-        mergeLinkList(system, debug).then(() => {
-          console.log('resolved link list, reinstate completes')
-          resolve()
-        }).catch((err) => {
-          reject(err)
-        })
-      }).catch((err) => {
+    // and and,
+    this.open = system.open
+    this.size = system.size
+    // ok,
+    return new Promise(async (resolve, reject) => {
+      try {
+        await mergeHunkList(system, debug)
+        await mergeLinkList(system, debug)
+        for (let s in system.hunks) {
+          let spec = system.hunks[s]
+          if (spec.contains) {
+            // find the context for it (this should be the matched link)
+            let interior = defs[s].interior()
+            console.warn('interior', this.defs[s].interior())
+            console.warn('def', this.defs[s])
+            if (!interior) throw new Error('cannot grab a context for this subsection of the system', spec.contains)
+            await interior.reinstate(spec.contains)
+          }
+        }
+        resolve()
+      } catch (err) {
+        console.error(err)
         reject(err)
-      })
+      }
     })
   }