diff --git a/wpilibc/simulation/src/Utility.cpp b/wpilibc/simulation/src/Utility.cpp
index b0710f1..4b49725 100644
--- a/wpilibc/simulation/src/Utility.cpp
+++ b/wpilibc/simulation/src/Utility.cpp
@@ -1,3 +1,9 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2016. All Rights Reserved.                             */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
+/*----------------------------------------------------------------------------*/
 
 /* Copyright (c) FIRST 2008. All Rights Reserved.							  */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
@@ -16,7 +22,7 @@
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
-#if defined(UNIX)
+#if not defined(_WIN32)
 	#include <execinfo.h>
 	#include <cxxabi.h>
 #endif
@@ -58,29 +64,27 @@
  * This allows breakpoints to be set on an assert.
  * The users don't call this, but instead use the wpi_assert macros in Utility.h.
  */
-bool wpi_assert_impl(bool conditionValue, const std::string &conditionText,
-                     const std::string &message, const std::string &fileName,
-                     uint32_t lineNumber, const std::string &funcName) {
+bool wpi_assert_impl(bool conditionValue, const char *conditionText,
+                     const char *message, const char *fileName,
+                     uint32_t lineNumber, const char *funcName) {
   if (!conditionValue) {
-    // Error string buffer
-    std::stringstream error;
+    std::stringstream errorStream;
 
-    // If an error message was specified, include it
-    // Build error string
-    if (message.size()) {
-      error << "Assertion failed: \"" << message << "\", \"" << conditionText
-            << "\" failed in " << funcName + "() in " << fileName << " at line "
-            << lineNumber;
+    errorStream << "Assertion \"" << conditionText << "\" ";
+    errorStream << "on line " << lineNumber << " ";
+    errorStream << "of " << basename(fileName) << " ";
+
+    if (message[0] != '\0') {
+      errorStream << "failed: " << message << std::endl;
     } else {
-      error << "Assertion failed: \"" << conditionText << "\" in " << funcName
-            << "() in " << fileName << " at line " << lineNumber;
+      errorStream << "failed." << std::endl;
     }
 
     // Print to console and send to remote dashboard
-    std::cout << "\n\n>>>>" << error.str();
-
+    std::cout << "\n\n>>>>" << errorStream.str();
     wpi_handleTracing();
   }
+
   return conditionValue;
 }
 
@@ -161,13 +165,13 @@
  *
  * @return The current time in microseconds according to the FPGA (since FPGA reset).
  */
-uint32_t GetFPGATime()
+uint64_t GetFPGATime()
 {
 	return wpilib::internal::simTime * 1e6;
 }
 
 //TODO: implement symbol demangling and backtrace on windows
-#if defined(UNIX)
+#if not defined(_WIN32)
 
 /**
  * Demangle a C++ symbol, used for printing stack traces.
