anchor.diff:                :url (lisp url)
                 :username (lisp (webhax-user:get-user-name))))))
   
  -  ;;FIXME: Think about taking over the /opinion/ URL for this
     (setf (ningle:route *app* "/opinion-page/*")
           (quick-page
               ()
  
positive.code:                 :child opinion-page)))))
  
    (setf (ningle:route *app* "/o/*")
          (quick-page
              ()
            (bind-validated-input
                ((iid :string))
              (handler-case
                  (let* ((opin (opinion-by-id iid))
                         (rooturl (assoc-cdr :rooturl opin)))
                    (mount-component (target-loader)
                      :url (lisp rooturl)
                      :rootid (lisp (assoc-cdr :rootid opin))
                      :title (lisp (grab-title rooturl))
                      :looks (lisp (when (authenticated?)
                                     (ps-gadgets:as-ps-data
                                      (get-looks (get-user-name) (assoc-cdr :rootid opin)))))
                      :focus (lisp (list* 'list (tree-address (assoc-cdr :id opin))))
                      :username (lisp (webhax-user:get-user-name))
                      :child opinion-page))
                (warflagger:not-found (c)
                  (declare (ignore c))
                  (webhax-core:web-fail-404))))))
  
    (setf (ningle:route *app* "/o2/*")
          (quick-page
              ()
            (bind-validated-input
  
negative.code:          :content-type "application/json"))
  
    ;;FIXME: Target page needs to handle URLs that don't have a rootid yet.
  
    (setf (ningle:route *app* "/target/*")
          (quick-page
              (:@side-content
               (lambda ()
                 (bind-validated-input
                     ((id :integer))
                   (target-participants-sidebar id))))
            (bind-validated-input
                ((id :integer)
                 &key
  