   (:require [cats.protocols :as p]))
 
 (def ^:dynamic *context* nil)
-(def ^:const +level-default+ 10)
-(def ^:const +level-transformer+ 100)
+(def ^:dynamic *strict* false)
 
 (defn throw-illegal-argument
   {:no-doc true :internal true}

     `(with-context ~ctx
        ~@body)))

(def ^:private not-nil? (comp not nil?))

(defn get-current
  "Get current context or obtain it from
  the provided instance."
  {:no-doc true}
  ([]
   (if (not-nil? *context*)
     *context*
     (throw-illegal-argument
      "No context is set and it can not be automatically resolved.")))
  ([param]
   (cond
     (not-nil? *context*)
     *context*

     (satisfies? p/Contextual param)
     (p/-get-context param)

     (satisfies? p/Context param)
     param

     :else
     (throw-illegal-argument
      "No context is set and it can not be automatically resolved."))))

;; Copyright (c) 2014-2016 Andrey Antukh <niwi@niwi.nz>
;; Copyright (c) 2014-2016 Alejandro Gómez <alejandro@dialelo.com>
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
