diff --git a/vmbase/src/console.rs b/vmbase/src/console.rs
index a7d37b4..657a62b 100644
--- a/vmbase/src/console.rs
+++ b/vmbase/src/console.rs
@@ -37,36 +37,25 @@
     CONSOLE.lock().replace(uart);
 }
 
-/// Writes a string to the console.
+/// Writes a formatted string followed by a newline to the console.
 ///
 /// Panics if [`init`] was not called first.
-pub(crate) fn write_str(s: &str) {
-    CONSOLE.lock().as_mut().unwrap().write_str(s).unwrap();
+pub(crate) fn writeln(format_args: Arguments) {
+    let mut guard = CONSOLE.lock();
+    let uart = guard.as_mut().unwrap();
+
+    write(uart, format_args).unwrap();
+    let _ = uart.write_str("\n");
 }
 
-/// Writes a formatted string to the console.
-///
-/// Panics if [`init`] was not called first.
-pub(crate) fn write_args(format_args: Arguments) {
-    write(CONSOLE.lock().as_mut().unwrap(), format_args).unwrap();
-}
-
-/// Reinitializes the UART driver and writes a string to it.
+/// Reinitializes the UART driver and writes a formatted string followed by a newline to it.
 ///
 /// This is intended for use in situations where the UART may be in an unknown state or the global
 /// instance may be locked, such as in an exception handler or panic handler.
-pub fn emergency_write_str(s: &str) {
-    let mut uart = create();
-    let _ = uart.write_str(s);
-}
-
-/// Reinitializes the UART driver and writes a formatted string to it.
-///
-/// This is intended for use in situations where the UART may be in an unknown state or the global
-/// instance may be locked, such as in an exception handler or panic handler.
-pub fn emergency_write_args(format_args: Arguments) {
+pub fn ewriteln(format_args: Arguments) {
     let mut uart = create();
     let _ = write(&mut uart, format_args);
+    let _ = uart.write_str("\n");
 }
 
 /// Prints the given formatted string to the console, followed by a newline.
@@ -74,32 +63,16 @@
 /// Panics if the console has not yet been initialized. May hang if used in an exception context;
 /// use `eprintln!` instead.
 macro_rules! println {
-    () => ($crate::console::write_str("\n"));
-    ($($arg:tt)*) => ({
-        $crate::console::write_args(format_args!($($arg)*))};
-        $crate::console::write_str("\n");
-    );
+    ($($arg:tt)*) => ($crate::console::writeln(format_args!($($arg)*)));
 }
 
 pub(crate) use println; // Make it available in this crate.
 
-/// Prints the given string to the console in an emergency, such as an exception handler.
-///
-/// Never panics.
-#[macro_export]
-macro_rules! eprint {
-    ($($arg:tt)*) => ($crate::console::emergency_write_args(format_args!($($arg)*)));
-}
-
 /// Prints the given string followed by a newline to the console in an emergency, such as an
 /// exception handler.
 ///
 /// Never panics.
 #[macro_export]
 macro_rules! eprintln {
-    () => ($crate::console::emergency_write_str("\n"));
-    ($($arg:tt)*) => ({
-        $crate::console::emergency_write_args(format_args!($($arg)*))};
-        $crate::console::emergency_write_str("\n");
-    );
+    ($($arg:tt)*) => ($crate::console::ewriteln(format_args!($($arg)*)));
 }
