 (defn activate-user
   "activate a feature for a particular user"
   [{storage :storage} feature-name user]
-  (with-storage
+  (update-in-storage
     (fn [feature]
       (update-in feature
                 :users

  [storage feature-name]
  (parse-feature feature-name (read-from-storage storage feature-name)))

(defn with-storage
  "alter a feature using the supplied function f. handles reading, serializing,
  deserializing, you just write f to modify the feature as wanted"
  [storage feature-name f]

  "deactivate a feature for a particular group.
  A group is just a string"
  [{storage :storage} feature-name group]
  (update-in-storage
    (fn [feature]
      (update-in feature
                 :groups
