diff --git a/lib/exirc/exirc_client.ex b/lib/exirc/exirc_client.ex
index 0612602..d0d8f58 100644
--- a/lib/exirc/exirc_client.ex
+++ b/lib/exirc/exirc_client.ex
@@ -1,94 +1,93 @@
 defmodule ExIrc.Client do
   use GenServer.Behaviour
+  import Logger
 
   # Maintains client state
   defrecord ClientState, events: nil, socket: nil
   # Defines the connection to an IRC server
   defrecord IrcConnection, host: 'localhost', port: 6667, password: ''
 
-  alias IO.ANSI, as: ANSI
-
   #####################
   # Public API
   #####################
 
   @doc """
   Add a new event handler (i.e bot) to a client
   """
   def add_handler(client, handler, args // []) do
     :gen_server.cast(client, {:add_handler, handler, args})
   end
 
   @doc """
   Connect a client to the provided IRC server
   """
   def connect!(client, connection) do
     :gen_server.cast client, {:connect, connection}
   end
 
   @doc """
   Disconnect a client
   """
   def disconnect!(client) do
     :gen_server.cast client, :disconnect
   end
 
   @doc """
   Send an event to a client's event handlers
   """
   def notify!(pid, event) do
     :gen_server.cast pid, {:notify, event}
   end
 
   #####################
   # GenServer API
   #####################
 
   def start_link() do
     :gen_server.start_link(__MODULE__, nil, [])
   end
 
   def init(_) do
     # Start the event handler
     {:ok, events} = :gen_event.start_link()
     {:ok, ClientState.new([events: events])}
   end
 
   @doc """
   Handles connecting the client to the provided IRC server
   """
   def handle_cast({:connect, connection}, state) do
     {:noreply, state}
   end
 
   @doc """
   Handles adding a new event handler (i.e bot) to the client
   """
   def handle_cast({:add_handler, handler, args}, state) do
     :gen_event.add_sup_handler(state.events, handler, args)
     {:noreply, state}
   end
 
   @doc """
   Handles event notifications
   """
   def handle_cast({:notify, event}, state) do
     :gen_event.notify(state.events, event)
     {:noreply, state}
   end
 
   @doc """
   Handles event handler termination. Specifically, it restarts handlers which have crashed.
   """
   def handle_info({:gen_event_EXIT, handler, reason}, state) do
     case reason do
       :normal          -> {:noreply, state.events}
       :shutdown        -> {:noreply, state.events}
       {:swapped, _, _} -> {:noreply, state.events}
       _ ->
         :gen_server.cast(self, {:add_handler, handler, []})
-        IO.puts(ANSI.magenta() <> "Handler #{atom_to_binary(handler)} crashed. Restarting..." <> ANSI.reset())
+        warning "Handler #{atom_to_binary(handler)} crashed. Restarting..."
         {:noreply, state}
     end
   end
 end
\ No newline at end of file
diff --git a/lib/exirc/logger.ex b/lib/exirc/logger.ex
new file mode 100644
index 0000000..02c3911
--- /dev/null
+++ b/lib/exirc/logger.ex
@@ -0,0 +1,9 @@
+defmodule Logger do
+    def warning(msg) do
+        IO.puts(IO.ANSI.magenta() <> msg <> IO.ANSI.reset())
+    end
+
+    def error(msg) do
+        IO.puts(IO.ANSI.red() <> msg <> IO.ANSI.reset())
+    end
+end
\ No newline at end of file