anchor.diff:           (t
             (setf (environments-of module) (remove env-name (environments-of module) :test #'string-equal))
             (save-env-data module)
  -          (reply-to message "Removed ~a from environments." env-name)))))))
  +          (reply-to message "Removed ~a from environments." env-name))))
  +      (t
  +       (send-env-usage message)))))
  +
  +(defmethod handle-command ((module env-module) (cmd (eql 'take)) message args)
  +  "take <envname> <time> [<activity>] - Acquire a lease on an environment"
  +  (expire-env-leases module)
  +  (let ((lease (env-has-lease-p module (first args))))
  +    (if lease
  +        (reply-to message "~a is being leased by ~a for ~a.  You may share or steal the environment.")
  +        (reply-to message (create-lease module (first args) (source message)
  +                                        (second args)
  +                                        (join-string #\space (cddr args)))))))
  +
  +(defmethod handle-command ((module env-module) (cmd (eql 'share)) message args)
  +  "share <envname> <time> [<activity>] - Share an environment with someone else"
  +  (expire-env-leases module)
  +  (reply-to message (create-lease module (first args) (source message)
  +                                  (second args)
  +                                  (join-string #\space (cddr args)))))
  +
  +(defmethod handle-command ((module env-module) (cmd (eql 'steal)) message args)
  +  "steal <envname> <time> [<activity>] - Take an environment from someone else"
  +  (expire-env-leases module)
  +  (remove-all-env-leases module (first args))
  +  (reply-to message (create-lease module (first args) (source message)
  +                                  (second args)
  +                                  (join-string #\space (cddr args)))))
  +
  +(defmethod handle-command ((module env-module) (cmd (eql 'release)) message args)
  +  "release <envname> - Release your lease on an environment"
  +  (expire-env-leases module)
  +  (reply-to message (release-lease module (first args) (source message))))
  +
  +(defmethod handle-command ((module env-module) (cmd (eql 'update)) message args)
  +  "update <envname> [<status>]- Update an environment's status"
  +  (reply-to message (set-env-status module (first args) (join-string #\space (cdr args)))))
  
positive.code:      (save-env-data module)
       (format nil "~a status is now: ~a" env-name status))))
  
  (defmethod handle-command ((module env-module) (cmd (eql 'env))
                             message args)
    "env - manage environment leases and statuses"
  
negative.code:       ((null args)
         (reply-to message "~{~a~^, ~}" (environments-of module)))
        ((string-equal env-name "help")
         (send-env-usage message))
        ((null (cdr args))
         ;; query leases
         (if (member env-name (environments-of module) :test #'string-equal)
  