          (ControlProxy. name value rate rate-name)))))
 
 (defrecord OutputProxy [ugen rate rate-name index])
-(derive OutputProxy ::sc-ugen)
+(derive OutputProxy ::output-proxy)
+(derive ::output-proxy ::sc-ugen)
 
 (defn output-proxy
   "Create a new output proxy. Throws an error if any of the args are nil."

  (.write w (str "#<sc-ugen: " (overtone-ugen-name (:name ug)) (:rate-name ug) " [" (count-ugen-args ug) "]>")))

(defrecord ControlProxy [name value rate rate-name])
(derive ControlProxy ::sc-ugen)

(defn control-proxy
  "Create a new control proxy with the specified name, value and rate. Rate

      (throw (IllegalArgumentException. (str "Attempted to create an OutputProxy with nil args. Got " [ugen rate rate-name index])))
      (OutputProxy. ugen rate rate-name index))))

(defn control-proxy?
  [obj]
  (isa? (type obj) ::control-proxy))

(defn output-proxy?
  [obj]
  (isa? (type obj) ::output-proxy))
