diff --git a/lisp-unit.lisp b/lisp-unit.lisp
index 317a69f..6be32b3 100644
--- a/lisp-unit.lisp
+++ b/lisp-unit.lisp
@@ -281,6 +281,7 @@ assertion.")
 
 (defmacro define-test (name &body body)
   "Store the test in the test database."
+  (format t "defining test ~A~%" name)
   (let ((qname (gensym "NAME-")))
     (multiple-value-bind (doc tag code) (parse-body body)
       `(let* ((,qname (valid-test-name ',name))
@@ -783,6 +784,7 @@ assertion.")
 
 (defun record-result (test-name code results)
   "Run the test code and record the result."
+  (format t "Beginning test ~A~%" test-name)
   (let ((result (run-test-thunk test-name code)))
     ;; Store the result
     (setf (gethash test-name (database results)) result)
@@ -808,6 +810,13 @@ assertion.")
   "Print a summary of all results to the stream."
   (let ((pass (pass results))
         (fail (fail results)))
+    ;; fixing issue #48
+    (maphash (lambda (test-name result)
+               (when (fail result)
+                 (format stream " |    failed: ~A~%" test-name))) (database results))
+    (maphash (lambda (test-name result)
+               (when (exerr result)
+                 (format stream " |    error: ~A~%" test-name))) (database results)) 
     (format stream "~&Unit Test Summary~%")
     (format stream " | ~D assertions total~%" (+ pass fail))
     (format stream " | ~D passed~%" pass)
@@ -916,7 +925,12 @@ If MERGE is NIL, then an error is signalled when a conflict occurs."
      for test-name being each hash-key in table
      using (hash-value unit-test)
      if unit-test do
-     (record-result test-name (code unit-test) results)
+       (let ((start-time (get-internal-real-time)))
+         (prog2 (format t "~A ~A~%" package test-name)
+             (record-result test-name (code unit-test) results)
+           (format t "~A ~A ~F seconds~%~%" package test-name
+                   (/ (- (get-internal-real-time) start-time)
+                      internal-time-units-per-second))))
      else do
      (push test-name (missing-tests results))
      ;; Summarize and return the test results
@@ -935,7 +949,12 @@ If MERGE is NIL, then an error is signalled when a conflict occurs."
      for test-name in test-names
      as unit-test = (gethash test-name table)
      if unit-test do
-     (record-result test-name (code unit-test) results)
+       (let ((start-time (get-internal-real-time)))
+         (prog2 (format t "~A ~A~%" package test-name)
+             (record-result test-name (code unit-test) results)
+           (format t "~A ~A ~F seconds~%~%" package test-name
+                   (/ (- (get-internal-real-time) start-time)
+                      internal-time-units-per-second))))
      else do
      (push test-name (missing-tests results))
      finally
@@ -969,7 +988,7 @@ If MERGE is NIL, then an error is signalled when a conflict occurs."
   (format stream "~& | Failed Form: ~S" (form result))
   (call-next-method)
   (when (extras result)
-    (format stream "~{~& | ~S => ~S~}~%" (extras result)))
+    (format stream "~{~& | ~S ~%   => ~S~}~%" (extras result)))
   (format stream "~& |~%"))
 
 (defmethod print-failures ((result failure-result) &optional