diff --git a/README.md b/README.md
index efa2f79df3d04611ebf7ed370e260f56040a02d6..b45d4e195b24c78e32735e5676d1c3067756d80d 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,11 @@
 
 Adds debug to volatile register when compiled with `--features debug-fmt`.
 
+## Caveats
+
+Notice, the current implementation requres a nightly toolchain (`feature(specilization`)).
+This can be 
+
 ``` rust
 extern crate volatile_register;
 use std::mem;
diff --git a/examples/example.rs b/examples/example.rs
index c0e601ca58b19e65b16ebf376acce3944cff78fd..411c6463cab05a6efe0f6511bbb929d3587f6846 100644
--- a/examples/example.rs
+++ b/examples/example.rs
@@ -1,20 +1,25 @@
+//! Example to show the use of debug output for small register arrays
+//!
+//! > cargo run --example example2 --features debug-fmt
+//!
+
 extern crate volatile_register;
 use std::mem;
-use volatile_register::{RW};
+use volatile_register::RW;
 
- #[repr(C)]
- #[derive(Debug)]
- pub struct Nvic {
-     /// Interrupt Set-Enable
-     pub iser: [RW<u32>; 8],
-     reserved0: [u32; 24],
-     /// Interrupt Clear-Enable
-     pub icer: [RW<u32>; 8],
-     reserved1: [u32; 24],
-     // .. more registers ..
+#[repr(C)]
+#[derive(Debug)]
+pub struct Nvic {
+    /// Interrupt Set-Enable
+    pub iser: [RW<u32>; 8],
+    reserved0: [u32; 24],
+    /// Interrupt Clear-Enable
+    pub icer: [RW<u32>; 8],
+    reserved1: [u32; 24],
+    // .. more registers ..
 }
 
 fn main() {
-    let r : Nvic = unsafe {mem::uninitialized() }; 
+    let r: Nvic = unsafe { mem::uninitialized() };
     println!("{:?}", r);
-}
\ No newline at end of file
+}
diff --git a/examples/example2.rs b/examples/example2.rs
index 8241deadb82fc53ad2e3f52e69f4809d0dc666a2..1970e6a14f5dea21db65cb716fa8d89ae26469ab 100644
--- a/examples/example2.rs
+++ b/examples/example2.rs
@@ -1,3 +1,8 @@
+//! Example to show the use of debug output for big register arrays
+//!
+//! > cargo run --example example2 --features debug-fmt
+//!
+
 extern crate array_debug;
 extern crate volatile_register;
 
diff --git a/src/lib.rs b/src/lib.rs
index b5cffc8e00f025580e1417574adf4e22832a4687..99522ceb3bd055fffec58b652baba436643eb01a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -27,14 +27,13 @@
 
 #![deny(missing_docs)]
 #![no_std]
-#![feature(specialization)]
+#![cfg_attr(feature = "debug-fmt", feature(specialization))]
 
 extern crate vcell;
 
 #[cfg(feature = "debug-fmt")]
-use core::fmt;
+use core::fmt::{self, Debug, UpperHex};
 #[cfg(feature = "debug-fmt")]
-use core::fmt::{Debug, UpperHex};
 use vcell::VolatileCell;
 
 /// Read-Only register