diff --git a/deps/ox/src/ox/std/assert.cpp b/deps/ox/src/ox/std/assert.cpp
index 8cba5ffe..f20ec98a 100644
--- a/deps/ox/src/ox/std/assert.cpp
+++ b/deps/ox/src/ox/std/assert.cpp
@@ -32,21 +32,34 @@ void assertFunc<bool>([[maybe_unused]]const char *file, [[maybe_unused]]int line
 }
 
 template<>
-void assertFunc<Error>(const char *file, int line, Error err, const char *msg) {
+void assertFunc<Error>(const char *file, int line, Error err, const char *assertMsg) {
 	if (err) {
-		panic(file, line, msg, err);
+		std::cerr << "\033[31;1;1mASSERT FAILURE:\033[0m (" << file << ':' << line << "): " << assertMsg << '\n';
+		if (err.msg) {
+			std::cerr <<  "\tError Message:\t" << err.msg << '\n';
+		}
+		std::cerr <<  "\tError Code:\t" << err << '\n';
+		if (err.file != nullptr) {
+			std::cerr << "\tError Location:\t" << reinterpret_cast<const char*>(err.file) << ':' << err.line << '\n';
+		}
+		printStackTrace(2);
+		oxTrace("panic").del("") << "Panic: " << assertMsg << " (" << file << ":" << line << ")";
+		std::abort();
 	}
 }
 
 #if defined(OX_USE_STDLIB)
-void panic(const char *file, int line, const char *msg, Error err) {
-	std::cerr << "\033[31;1;1mPANIC:\033[0m (" << file << ':' << line << "): " << msg << '\n';
+void panic(const char *file, int line, const char *panicMsg, Error err) {
+	std::cerr << "\033[31;1;1mPANIC:\033[0m (" << file << ':' << line << "): " << panicMsg << '\n';
+	if (err.msg) {
+		std::cerr <<  "\tError Message:\t" << err.msg << '\n';
+	}
 	std::cerr <<  "\tError Code:\t" << err << '\n';
 	if (err.file != nullptr) {
 		std::cerr << "\tError Location:\t" << reinterpret_cast<const char*>(err.file) << ':' << err.line << '\n';
 	}
 	printStackTrace(2);
-	oxTrace("assert").del("") << "Failed assert: " << msg << " (" << file << ":" << line << ")";
+	oxTrace("panic").del("") << "Panic: " << panicMsg << " (" << file << ":" << line << ")";
 	std::abort();
 }
 #endif
diff --git a/deps/ox/src/ox/std/error.hpp b/deps/ox/src/ox/std/error.hpp
index 9ab7a6fa..2398e633 100644
--- a/deps/ox/src/ox/std/error.hpp
+++ b/deps/ox/src/ox/std/error.hpp
@@ -13,20 +13,22 @@
 #include "utility.hpp"
 
 #ifdef DEBUG
-#define OxError(x) ox::_error(__FILE__, __LINE__, static_cast<ox::Error>(x))
+#define OxError(...) ox::_error(__FILE__, __LINE__, __VA_ARGS__)
 #else
-#define OxError(x) static_cast<ox::Error>(x)
+#define OxError(...) static_cast<ox::Error>(__VA_ARGS__)
 #endif
 
 namespace ox {
 
 struct BaseError {
+	const char *msg = nullptr;
 	const char *file = "";
 	uint16_t line = 0;
 
 	BaseError() = default;
 
 	constexpr BaseError(const BaseError &o) noexcept {
+		msg = o.msg;
 		file = o.file;
 		line = o.line;
 	}
@@ -35,10 +37,11 @@ struct BaseError {
 
 using Error = Integer<uint64_t, BaseError>;
 
-static constexpr Error _error(const char *file, uint32_t line, Error errCode) {
-	Error err = errCode;
+static constexpr Error _error(const char *file, uint32_t line, uint64_t errCode, const char *msg = nullptr) {
+	Error err = static_cast<ox::Error>(errCode);
 	err.file = file;
 	err.line = line;
+	err.msg = msg;
 	return err;
 }