         (map 'vector
              (lambda (x)
                (funcall (nth (random (length orc-battle-monster-builders))
-                         orc-battle-monster-builders)))
-             (make-array orc-battle-monster-num))))
-
-(defun monster-dead (m)
+                         orc-battle-monster-builders) "monster"))
+             (make-vector orc-battle-monster-num nil))))
+
+(defmethod monster-dead (m)
   (<= (monster-health m) 0))
 (defun monsters-dead ()
   (every 'monster-dead orc-battle-monsters))
+
+(defmethod monster-health (m)
+  (cond ((slot-boundp m 'health)
+         (oref m 'health))
+        (t 0)))
 
 (defun show-monsters ()
   (newline)

(defvar orc-battle-monsters nil)
(defvar orc-battle-monster-builders nil)
(defvar orc-battle-monster-num 12)

(defun orc-battle ()
  (interactive)

         (lambda (m)
             (newline)
             (insert "    ")
             (insert (int-to-string (incf x)))
             (insert ". ")
             (if (monster-dead m)
                 (insert "**dead**")
                 (progn (insert "(Health=")
                         (insert (int-to-string (monster-health m)))
                         (insert ") ")
                         (monster-show m))))
         orc-battle-monsters)))

(defclass monster nil ((health (randval 10)))
  "A monster")

(defmethod monster-hit (m x)
  (decf (oref m 'health) x)
  (if (monster-dead m)
      (progn (insert "You killed the ")
             (insert (type-of m))
