     mixin."
     [spec]
     #?(:cljs
-       {:class-properties {:childContextTypes {get-k     js/React.PropTypes.func
-                                               release-k js/React.PropTypes.func}}
+       {:class-properties class-properties
         :child-context    (fn [_] (let [{:keys [release! get!]} (derivatives-pool spec)]
                                     {release-k release! get-k get!}))}))
 

    [drv-k]
    #?(:cljs
       (let [token (rand-int 10000)] ; TODO think of something better here
         {:class-properties {:contextTypes {get-k     js/React.PropTypes.func
                                            release-k js/React.PropTypes.func}}
          :will-mount    (fn [s]
                           (let [get-drv! (-> s :rum/react-component (gobj/get "context") (gobj/get get-k))]
                             (assert get-drv! "No get! derivative function found in component context")

;; RUM specific code ===========================================================

(let [get-k     "org.martinklepsch.derivatives/get"
      release-k "org.martinklepsch.derivatives/release"
      class-properties #?(:cljs {:childContextTypes {get-k     js/React.PropTypes.func
                                                     release-k js/React.PropTypes.func}})]

  (defn rum-derivatives
    "Given the passed spec add get!/release! derivative functions to
