   {:pre [(server-connected?)]}
   (if (node-active? node)
     (snd "/n_free" (to-synth-id node))
-    (let [err-msg (str "Trying to free a synth node that has been destroyed: " node)]
-      (if *non-active-node-modification-exceptions*
-        (throw (Exception. err-msg))
-        (println (str "Warning - " err-msg)))))
+    (inactive-node-modification-error
+     (str "Trying to free a synth node that has been destroyed: " node)))
   node)
 
 (defn- node-destroyed

            [overtone.config.log :as log]))

(defonce ^{:dynamic true} *non-active-node-modification-exceptions* true)

(defonce ^{:private true}
  _PROTOCOLS_

  (let [node-id (to-synth-id node)]
    (if (node-active? node)
      (apply snd "/n_set" node-id (floatify (stringify (bus->id name-values))))
      (inactive-node-modification-error
       (str "Trying to control a synth node that has been destroyed: " node)))
    node))

(defn node-get-control
