anchor.diff:    (bordeaux-threads:make-lock "captcha lock")
     "Lock protecting *CAPTCHA-POOL*")
   
  -(defun register-captcha (gen/check)
  +(defun register-captcha (gen check)
     "Register CAPTCHA generator/checker functions"
  -  (push gen/check *captcha-providers*))
  +  (push (cons gen check) *captcha-providers*))
   
   (defun generate-captcha ()
     "Generate CAPTCHA for user and put it in pool"
  
positive.code: 
  ;; CAPTCHA
  (defstruct captcha
    (id        0   :type integer)
    (answer    ""  :type string)
    (time      0   :type integer))
  (defvar *captcha-pool* nil
    "Pool of current (not processed and not expired yet)
     tests")
  
negative.code:                        0))
                 (gen/check-num (random (length *captcha-providers*))))
  
            (multiple-value-bind (data question)
                (funcall (car (nth gen/check-num *captcha-providers*)))
  
              (push (make-captcha :id id
                                  :data data
                                  :checker (cdr (nth gen/check-num *captcha-providers*))
                                  :time (get-universal-time))
                    *captcha-pool*)
  
              (format nil "~d ~a" id question))))))
  
  (defun check-captcha (answer-str)
  