     TestStatus  status;
     std::string name;
     std::string message;
-    
-    TestResult(const TestStatus status, const UnitTest& u)
-        : status(status), name(u.name)
-    { }
-
-    TestResult(const TestStatus status, const UnitTest& u, const std::string& message)
-        : status(status), name(u.name), message(message)
+
+    // XXX use a c++11 timer result when available
+    std::clock_t elapsed;
+
+    TestResult(const TestStatus status, std::clock_t elapsed, const UnitTest& u, const std::string& message = "")
+        : status(status), name(u.name), message(message), elapsed(elapsed)
     { }
 
     bool operator<(const TestResult& tr) const


bool UnitTestDriver::run_tests(std::vector<UnitTest *>& tests_to_run, const ArgumentMap& kwargs)
{
    bool verbose = kwargs.count("verbose");
    bool concise = kwargs.count("concise");
    

                switch(test_results.back().status)
                {
                    case Pass:
                        std::cout << "\r[PASS] ";
                        std::cout << std::setw(10) << 1000.f * float(test_results.back().elapsed) / CLOCKS_PER_SEC << " ms";
                        break;
                    case Failure:
                        std::cout << "\r[FAILURE]           "; break;
                    case KnownFailure:
                        std::cout << "\r[KNOWN FAILURE]     "; break;
                    case Error:
                        std::cout << "\r[ERROR]             "; break;
                    default:
                        break;
                }
