     `(do 
        (declare ~validate-fn)
 
-       (defn ~gen-fn []
+       (defn- ~gen-fn []
+         "generated ids for entities"
          (wcar (~id-fn (car/incr ~(<< "~{name*}:ids")))))
 
        (defn ~add-fn [~'v]

  (:use
    [slingshot.slingshot :only  [throw+ try+]]
    [celestial.redis :only (wcar hsetall*)]
    [clojure.core.strint :only (<<)])
  (:require 
    [taoensso.carmine :as car])
 )

(defmacro <<< 
  "String interpulation into a symbol"
  [s] `(symbol (<< ~s)))

       (defn ~update-fn ~up-args
         (~validate-fn ~'v)
         (~exists! ~up-id)
         (let [orig# (wcar (car/hgetall* (~id-fn ~up-id) true)) updated# (merge orig# ~'v)]
           (wcar 
             (~reindex ~up-id orig# updated#) 
             (hsetall* (~id-fn ~up-id) (assoc updated# :meta ~meta*))))))))
