anchor.diff:                 (describe-time-left expire-time))))))
   
   (defun release-lease (env-name nick)
  -  (remove-env-lease env-name nick)
  -  (save-env-data)
  -  (format nil "~a released by ~a" env-name nick))
  +  (cond
  +    ((not (member env-name *pss-environments* :test #'string-equal))
  +     (format nil "Can't find environment ~a" env-name))
  +    (t
  +     (remove-env-lease env-name nick)
  +     (save-env-data)
  +     (format nil "~a released by ~a" env-name nick))))
   
   (define-serious-command env (message directp &rest args)
     (expire-env-leases)
     (let ((env-name (first args))
           (subcmd (second args)))
       (cond
  -      ((and (not (member env-name *pss-environments* :test #'string-equal))
  -            (not (equal (first args) "add")))
  -       (reply-to message "Can't find environment ~a" env-name))
         ((null args)
          (reply-to message "~{~a~^, ~}" *pss-environments*))
  +      ((string-equal env-name "help")
  +       (flet ((send (text)
  +                (irc:notice (connection message) (source message) text)))
  +         (send "~env                                    - list known environments")
  +         (send "~env <envname>                          - query leases for environment")
  +         (send "~env <envname> take <time> [<activity>] - lease the environment")
  +         (send "~env <envname> release                  - release your lease on environment")
  +         (send "~env <envname> add                      - add a new environment")
  +         (send "~env <envname> remove                   - remove an environment")
  +         (send "~env <envname> help                     - display this help")))
         ((null (cdr args))
          ;; query leases
          (if (member env-name *pss-environments* :test #'string-equal)
  
positive.code:            (reply-to message "Can't find environment ~a" env-name)))
        ((string-equal subcmd "take")
         (reply-to message (create-lease env-name (source message)
                                         (first args)
                                         (join-string #\space (rest args)))))
        ((string-equal subcmd "release")
         (reply-to message (release-lease env-name (source message))))
        ((string-equal subcmd "add")
  
negative.code:                        :if-does-not-exist :create)
      (write-line ";; Environments" ouf)
      (write *pss-environments* :stream ouf)
      (terpri ouf)
      (write-line ";; Leases" ouf)
      (write *pss-leases* :stream ouf)
      (terpri ouf)))
  
  (defun load-env-data ()
    (with-open-file (inf (orca-path "data/pss-envs.lisp") :direction :input)
  