--- a/platform-support.lisp
+++ b/platform-support.lisp
@@ -1,3 +1,5 @@
+(in-package :sbcl-page)
+
 (defparameter *processors* nil)
 (defparameter *systems* nil)
 (defparameter *statuses* nil)
@@ -40,26 +42,34 @@
     (push-end (list ,processor ,system ,status ,link ,version) *ports*)))
 
 (defun port-status (proc system)
-  (let ((status (find-if #'(lambda (e)
-                             (and (eq (first e) proc)
-                                  (eq (second e) system))) *ports*)))
+  (let ((status (find-if (lambda (e)
+                           (and (eq (first e) proc)
+                                (eq (second e) system))) *ports*)))
     (if status
         (third status)
         (if (find proc (cddr (find system *systems* :key #'car)))
             :not-available
             :not-applicable))))
 
-(defun table-cell-for-status (status &key (elt :|td|) (link nil) version)
-  `((,elt :|class| ,(second (assoc status *statuses*)))
-    ((,(if link :|a| :|span|) ,@(if link `(:|href| ,link)))
-     ((:|div| :|class| "big-height")
-      ((:|span| :|class| "hide-me")
-       ,(fourth (assoc status *statuses*)))
-      " "
-      ,(or version "")
-      ,(if (equal version (car *most-recent-release*))
-           '(:|i| " newest")
-           "")))))
+(defun table-cell-for-status (status &key header link version)
+  (let ((status (second (assoc status *statuses*))))
+    (funcall
+     (if header
+         <th class=,status>
+         <td class=,status>)
+     (funcall
+      (if link
+          <a href=,link>
+          <span>)
+      
+      (<div class= "big-height">
+            (<span class= "hide-me">
+                   (fourth (assoc status *statuses*)))
+            " "
+            (or version "")
+            (if (equal version (car *most-recent-release*))
+                (<i> " newest")
+                ""))))))
 
 (defun port-link (proc system)
   (fourth (find-if #'(lambda (e)
@@ -67,76 +77,88 @@
                             (eq (second e) system))) *ports*)))
 
 (defun port-version (proc system)
-  (fifth (find-if #'(lambda (e)
-                       (and (eq (first e) proc)
-                            (eq (second e) system))) *ports*)))
+  (fifth (find-if (lambda (e)
+                    (and (eq (first e) proc)
+                         (eq (second e) system))) *ports*)))
 
 (defun port-xml ()
-  `((:|table| :|class| "port-table")
-    ((:|tr| :|class| "processor-header") (:|th|)
-     ,@(loop for processor in *processors*
-          collect `((:|th|)
-                    ,(second processor))))
-    ,@(loop for system in *systems*
-            collect `((:|tr| :|class| "system-header")
-                      (:|th| ,(second system))
-                      ,@(loop for proc in *processors*
-                              collect (table-cell-for-status
-                                       (port-status (first proc)
-                                                    (first system))
-                                       :link
-                                       (port-link (first proc)
-                                                  (first system))
-                                       :version
-                                       (port-version (first proc)
-                                                     (first system))))))))
+  (<table class= "port-table">
+   (<tr class= "processor-header">
+        <th/>
+        (loop for processor in *processors*
+           collect (<th> (second processor))))
+   (loop for system in *systems*
+      collect
+        (<tr class= "system-header">
+             (<th> (second system))
+             (loop for proc in *processors*
+                collect (table-cell-for-status
+                         (port-status (first proc)
+                                      (first system))
+                         :link
+                         (port-link (first proc)
+                                    (first system))
+                         :version
+                         (port-version (first proc)
+                                       (first system))))))))
 
 (defun port-page ()
-  `((:|p|
-      "SBCL runs on many Unix and Unix-like systems. The following table summarizes what systems SBCL runs on, and what it could run on but currently does not. The table also contains links to the latest binaries for SBCL on each platform, when they are available.")
-    (:|p| "The most recent version of SBCL is " ,(car *most-recent-release*) ", released "
-      ,(second *most-recent-release*) ". The release notes are available on the "
-      ((:|a| :|href| ,(concatenate 'string
-                                   (page-link :news) "#" (car *most-recent-release*)))
-       "news page") ".")
-    (:|p| "If a binary of this version of SBCL is not available for your platform, or if you'd like to customize the binary, download "
-      ((:|a| :|href|
-	 ,(format nil "http://prdownloads.sourceforge.net/sbcl/sbcl-~A-source.tar.bz2?download" (car *most-recent-release*))) "the source")
+  (list
+   (<p>
+    "SBCL runs on many Unix and Unix-like systems. The following table summarizes what systems SBCL runs on, and what it could run on but currently does not. The table also contains links to the latest binaries for SBCL on each platform, when they are available.")
+   (<p>
+    "The most recent version of SBCL is "
+    (first *most-recent-release*)
+    ", released "
+    (second *most-recent-release*)
+    ". The release notes are available on the "
+    (<a href= ,(concatenate 'string (page-link :news) "#" (car *most-recent-release*))>
+      "news page")
+    ".")
+    (<p>
+     "If a binary of this version of SBCL is not available for your platform, or if you'd like to customize the binary, download "
+     (<a href= ,(format nil "http://prdownloads.sourceforge.net/sbcl/sbcl-~A-source.tar.bz2?download" (car *most-recent-release*))>
+         "the source")
       " and follow the directions for "
-      ((:|a| :|href| ,(page-link :getting-sbcl))
-       "compiling it") ".") 
-    (:|p|
-      (:|b| "Source code: ")
-      ((:|a| :|href|
-         ,(format nil "http://prdownloads.sourceforge.net/sbcl/sbcl-~A-source.tar.bz2?download" (car *most-recent-release*)))
-       "sbcl-" ,(car *most-recent-release*) "-source.tar.bz2"))
-    ((:|div| :|class| "left-floater")
-     ,(port-xml))
-    ((:|table| :|class| "key")
-     (:|tr|
-       (:|td| "")
-       ((:|td|)
-        (:|h1| "Key")))
-     ,@(loop for s in *statuses*
-          collecting
-          `((:|tr| :|class| "key-blob")
-            ,(table-cell-for-status (car s) :elt :|th|)
-            (:|td|
-              ,(third s)))))
-    (:|p|)
-    ((:|table| :|class| "key")
-     (:|tr|
-       ((:|td|) "")
-       ((:|td|)
-        (:|h1| "Processors")))
-     ,@(loop for processor in *processors*
-          collecting `(:|tr|
-                        (:|th|
-                          (:|b| ,(second processor)))
-                        (:|td|
-                          ,(third processor)))))
-    (:|p| "Historically SBCL also ran on " ((:|a| :|href| "http://en.wikipedia.org/wiki/PA-RISC") "HP PA-RISC") " processors under Linux and on Alpha processors under " ((:|a| :|href| "http://en.wikipedia.org/wiki/Tru64_UNIX") "Tru64") ", but this support has not been maintained.")
-    (:|p|
-      "Older binaries and source releases are available on the SourceForge " ((:|a| :|href| "http://sourceforge.net/project/showfiles.php?group_id=1373") "File Releases") " page.")))
+      (<a href= ,(page-link :getting-sbcl)>
+        "compiling it") ".")
+    (<p>
+      (<b> "Source code: ")
+      (<a href= ,(format nil "http://prdownloads.sourceforge.net/sbcl/sbcl-~A-source.tar.bz2?download" (car *most-recent-release*))>
+          "sbcl-" (car *most-recent-release*) "-source.tar.bz2"))
+    (<div class= "left-floater">
+          (port-xml))
+    (<table class= "key">
+            (<tr>
+             (<td> "")
+             (<td>
+              (<h1> "Key")))
+            (loop for s in *statuses*
+               collecting
+                 (<tr class= "key-blob">
+                      (table-cell-for-status (car s) :header t)
+                      (<td> (third s)))))
+    <p/>
+    (<table class= "key">
+            (<tr>
+             (<td> "")
+             (<td>
+              (<h1> "Processors")))
+            (loop for processor in *processors*
+               collecting
+                 (<tr>
+                  (<th> (<b> (second processor)))
+                  (<td> (third processor)))))
+    (<p>
+     "Historically SBCL also ran on "
+     (<a href= "http://en.wikipedia.org/wiki/PA-RISC"> "HP PA-RISC")
+     " processors under Linux and on Alpha processors under "
+     (<a href= "http://en.wikipedia.org/wiki/Tru64_UNIX"> "Tru64")
+     ", but this support has not been maintained.")
+    (<p>
+     "Older binaries and source releases are available on the SourceForge "
+     (<a href= "http://sourceforge.net/project/showfiles.php?group_id=1373">
+         "File Releases")
+     " page.")))
 
 (define-page :ports "Download" "platform-table" port-page)