                           (assoc-in last-edits edits)
                           (assoc-in edit-queue nil))))))
 
-      core/INotificationSource
+      store/INotificationSource
       (-notify-deps [_]
         (let [edits (get-in @db last-edits)
-              dep-graph (get-in @db deps)]
-          (notify-updates (map :path edits) dep-graph)))
-
-      core/IDirty
+              dep-graph (get-in @db deps)
+              ea-paths (map (fn [datom] [:ea (:e datom) (:a datom)]) edits)
+              av-paths (map (fn [datom] [:ea (:a datom) (:v datom)]) edits)]
+          (bs/notify-updates (concat ea-paths av-paths) dep-graph)))
+
+      store/IDirty
       (-dirty? [_]
-        (not (nil? (get-in @db edit-queue)))))))
+        (store/dirty? db)))))
 
 (defn- update-in-sorted [map path f & args]
   (let [map (if (associative? map) map (sorted-map))

(defn create-store [& [schema]]
  (let [ea (sorted-map)
        av (sorted-map)
        db (copper/-store
            (atom {:ea ea
                   :av av
                   :schema schema}))]

(defn- op->datoms [db [op e a v] tx]
  (case op
    :db/add
      (if (= :many (store/read db [:schema a :cardinality]))
        (when (empty? (-search db [e a v]))
          [(datom e a v tx true)])
        (if-let [old-datom (first (-search db [e a]))]
