anchor.diff:                   (<:submit :value "Send"))))
   
   (defun render-logout-button ()
  -  (<:form :class "logout-button" :action "/logout"
  +  (<:form :class "logout-button" :action "/logout" :method "post"
             (<:submit :value "Log Out")))
   
  -(define-easy-handler (home :uri "/") ()
  -  (unless (and *session* (session-value 'account-name))
  -    (redirect "/login"))
  +(define-easy-handler (home :uri "/") (#+nil char)
  +  (ensure-logged-in)
     (with-yaclml-output-to-string
       (<:html
        (<:head
  
positive.code:           (<:br)
            (<:submit :value "Submit")))
  
  (defun render-error-messages (errors)
    (<:ul :class "errorlist"
          (mapc (lambda (err) (<:li (<:ah err))) errors)))
  
  (define-easy-handler (signup :uri "/signup") (account-name display-name password confirmation)
    (with-yaclml-output-to-string
      (<:html
       (<:head
        (<:title "Sign up for Sykosomatic")
        (<:script :src "http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" :type "text/javascript"))
       (<:body
        (if (emptyp account-name)
            (render-signup-component)
            (multiple-value-bind (account-created-p errors)
                (create-account account-name display-name password confirmation)
              (if account-created-p
                  (progn
                    (format t "~&Account created: ~A~%" account-name)
                    (redirect "/login"))
                  (progn
                    (render-error-messages errors)
                    (render-signup-component)))))))))
  
  (defun render-character-creation-component ()
    (<:form :name "create-character" :action "/newchar" :method "post"
  
negative.code:           (<:submit :value "Submit")))
  
  (define-easy-handler (login :uri "/login") (account-name password)
    (unless *session*
      (start-session))
    (case (request-method*)
      (:get
       (with-yaclml-output-to-string
         (<:html
          (<:head
           (<:title "Login Page")
           (<:script :src "http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" :type "text/javascript"))
          (<:body
           (when-let ((account-name (session-value 'account-name)))
             (push (format nil "Already logged in as ~A." account-name)
                   (session-value 'errors)))
           (when-let ((login-errors (pop (session-value 'errors))))
             (render-error-messages login-errors))
           (render-login-component))
          (<:a :href "/signup" "Create account.")))))
    (:post
     (if-let ((account (validate-credentials account-name password)))
       (progn
         (setf (session-value 'account-name) (account-name account)
               (session-value 'display-name) (account-display-name account))
         (format t "~&~A logged in.~%" account-name)
         (redirect "/"))
       (progn
         (push "Invalid login or password." (session-value 'errors))
         (redirect "/login"))))))
  
  (defun render-chat-box ()
    (<:div :class "chat-box" :id "chat-box"
  