diff --git a/src/lib.rs b/src/lib.rs
index 36f37d757b1ef15f74b2af6761c7113bb64a3648..d2e60e4ea3bee548e0128426e001b20ec460e297 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -29,15 +29,7 @@ mod kill_ring;
 pub mod line_buffer;
 mod char_iter;
 
-// Depending on the platform, load the correct
-// tty modules
-#[cfg(unix)]
-#[path = "tty/unix.rs"] mod tty;
-
-#[cfg(windows)]
-#[path = "tty/windows.rs"] mod tty;
-
-#[path = "tty/common.rs"] mod tty_common;
+mod tty;
 
 use std::fmt;
 use std::io::{self, Write};
@@ -48,7 +40,7 @@ use std::sync;
 use std::sync::atomic;
 use nix::sys::signal;
 use encode_unicode::CharExt;
-use tty_common::Terminal;
+use tty::Terminal;
 use completion::Completer;
 use consts::{KeyPress, char_to_key_press};
 use history::History;
@@ -642,7 +634,7 @@ fn escape_sequence<R: io::Read>(chars: &mut char_iter::Chars<R>) -> Result<KeyPr
 /// It will also handle special inputs in an appropriate fashion
 /// (e.g., C-c will exit readline)
 #[cfg_attr(feature="clippy", allow(cyclomatic_complexity))]
-fn readline_edit<T: tty_common::Terminal>(prompt: &str,
+fn readline_edit<T: tty::Terminal>(prompt: &str,
                  history: &mut History,
                  completer: Option<&Completer>,
                  kill_ring: &mut KillRing,
@@ -908,8 +900,8 @@ impl<'completer> Editor<'completer> {
         // if the number of columns is stored here, we need a SIGWINCH handler...
         let editor = Editor {
             unsupported_term: tty::is_unsupported_term(),
-            stdin_isatty: tty_common::is_a_tty(libc::STDIN_FILENO),
-            stdout_isatty: tty_common::is_a_tty(libc::STDOUT_FILENO),
+            stdin_isatty: tty::is_a_tty(libc::STDIN_FILENO),
+            stdout_isatty: tty::is_a_tty(libc::STDOUT_FILENO),
             history: History::new(),
             completer: None,
             kill_ring: KillRing::new(60),
diff --git a/src/tty/common.rs b/src/tty/mod.rs
similarity index 63%
rename from src/tty/common.rs
rename to src/tty/mod.rs
index 0a6e88c1d069cfa688ffcafa61e8bcd699d72e28..ef8a1a0b28f56881c51934f8feb275fdb2fa3db7 100644
--- a/src/tty/common.rs
+++ b/src/tty/mod.rs
@@ -2,6 +2,16 @@
 extern crate libc;
 use super::Result;
 
+// If on Windows platform import Windows TTY module 
+// and re-export into mod.rs scope
+#[cfg(windows)] mod windows;
+#[cfg(windows)] pub use self::windows::*;
+
+// If on Unix platform import Unix TTY module 
+// and re-export into mod.rs scope
+#[cfg(unix)] mod unix;
+#[cfg(unix)] pub use self::unix::*;
+
 /// Trait that should be for each TTY/Terminal on various platforms
 /// (e.g. unix & windows)
 pub trait Terminal {
diff --git a/src/tty/unix.rs b/src/tty/unix.rs
index 1adf68e343296f41faff08b570ce24466cca4612..fce1b6a0507cf35ffa63a43ce3ba66e2e3d4b31e 100644
--- a/src/tty/unix.rs
+++ b/src/tty/unix.rs
@@ -4,10 +4,9 @@ extern crate libc;
 use std;
 use nix::sys::termios;
 use nix::errno::Errno;
-use super::Result;
-use super::tty_common;
-use super::error;
-use tty_common::Terminal;
+use super::Terminal;
+use ::Result;
+use ::error;
 
 /// Unsupported Terminals that don't support RAW mode
 static UNSUPPORTED_TERM: [&'static str; 3] = ["dumb", "cons25", "emacs"];
@@ -71,12 +70,12 @@ pub struct UnixTerminal {
     original_termios: Option<termios::Termios>
 }
 
-impl tty_common::Terminal for UnixTerminal {
+impl Terminal for UnixTerminal {
     /// Enable raw mode for the TERM
     fn enable_raw_mode(&mut self) -> Result<()> {
         use nix::sys::termios::{BRKINT, CS8, ECHO, ICANON, ICRNL, IEXTEN, INPCK, ISIG, ISTRIP, IXON,
                                 OPOST, VMIN, VTIME};
-        if !tty_common::is_a_tty(libc::STDIN_FILENO) {
+        if !super::is_a_tty(libc::STDIN_FILENO) {
             return Err(error::ReadlineError::from_errno(Errno::ENOTTY));
         }
         let original_termios = try!(termios::tcgetattr(libc::STDIN_FILENO));