   (:use
     [slingshot.slingshot :only  [throw+ try+]]
     [celestial.redis :only (wcar hsetall*)]
+    [celestial.common :only (import-logging)]
     [clojure.core.strint :only (<<)])
   (:require 
     [taoensso.carmine :as car])
  )
 
+(import-logging)
 (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*))))))))

    `(do 
       (declare ~validate-fn)

       (defn- ~gen-fn []
         "generated ids for entities"
         (wcar (~id-fn (car/incr ~(<< "~{name*}:ids")))))

       (defn ~add-fn [~'v]
