   sessionContext.declarations.pop()
   sessionContext.syncState.virtualParameterDeclarations.pop()
 
-  if sessionContext.doneProvisions & (2 << (sessionContext.virtualParameters.length - 1))
-    doneProvisions = sessionContext.virtualParameters.pop()
-    sessionContext.revisions.pop()
-    sessionContext.doneProvisions &= (2 << sessionContext.virtualParameters.length) - 1
-    rev = sessionContext.revisions[sessionContext.revisions.length - 1]
-    sessionContext.deviceData.timestamps.collapse(rev + 1)
-    sessionContext.deviceData.attributes.collapse(rev + 1)
-    for k of sessionContext.extensionsCache
-      if rev < Number(k.split(':', 1)[0])
-        delete sessionContext.extensionsCache[k]
-
-  return rpcRequest(sessionContext, null, callback)
+  ret = sessionContext.provisionsRet.splice(inception)[0]
+  if not ret
+    return rpcRequest(sessionContext, null, callback)
+
+  sessionContext.revisions.pop()
+  rev = sessionContext.revisions[sessionContext.revisions.length - 1] or 0
+  sessionContext.deviceData.timestamps.collapse(rev + 1)
+  sessionContext.deviceData.attributes.collapse(rev + 1)
+  for k of sessionContext.extensionsCache
+    if rev < Number(k.split(':', 1)[0])
+      delete sessionContext.extensionsCache[k]
+
+  vparams = sessionContext.virtualParameters.pop()
+
+  if not vparams
+    return callback()
+
+  toClear = null
+  for vpu, i in ret
+    toClear = commitVirtualParameter(sessionContext, vparams[i], vpu, toClear)
+
+  clear(sessionContext, toClear, (err) ->
+    return rpcRequest(sessionContext, null, callback)
+  )
 
 
 # Simple algorithm to estimate GPN count in a set of patterns used

        return callback(null, fault)

      sessionContext.declarations.push(decs)
      sessionContext.doneProvisions |= 1 << inception if done

      for d in decs
        for ad in device.getAliasDeclarations(d[0], 1)

      run = runVirtualParameters
      provisions = sessionContext.virtualParameters[inception - 1]

    return run(sessionContext, provisions, sessionContext.revisions[inception - 1] or 0, sessionContext.revisions[inception], (err, fault, ret, decs, toClear) ->
      return callback(err) if err

      if fault
