         r.exist = true
 
       if declaration[2] > current[2]
+        r.object = true
+        r.exist = false
+
+      if declaration[4] > current[4]
         r.writable = true
-        r.exist = false
-
-      if declaration[4] > current[4]
-        r.object = true
         r.exist = false
 
       if declaration[6] > current[6]

            device.declare(sessionData.deviceData, d[0], d.slice(1), sessionData.timestamp)
      else
        for declaration in decs
          params = device.getAll(sessionData.deviceData, declaration[0], sessionData.revisions[iter] >> 1)
          if declaration[0][0] == 'Tags' and declaration[0].length == 2
            if not declaration[0][1]?
              continue if declaration[8][0]

            path = common.parsePath(provision[1])
            for i in [path.length...16] by 1
              path.length = i
              allDeclarations.push([path.slice(), provision[2], null, 1, null, 1, null, provision[2]])
          when 'value'
            allDeclarations.push([[common.parsePath(provision[1]), provision[2], null, null, null, null, null, provision[2]]])
          when 'tag'
