diff --git a/README.md b/README.md
index 50b58d1..b7b7e0f 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,10 @@
- update lines of code figures on docs
+- make all functions' trait bounds specific instead of at impl level
+
+- turn overlaps back into a trait to make it public, mabye
+
- run cargo fmt
- run and fix cargo clippy
- take a look around idiomatic rust for a bit first
diff --git a/src/lib.rs b/src/lib.rs
index 8b553a0..e6f9a98 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -32,22 +32,24 @@ along with range_bounds_map. If not, see .
//!
//! ```
//! # use range_bounds_map::RangeBoundsMap;
+//!
//! let mut range_bounds_map = RangeBoundsMap::new();
//!
//! range_bounds_map.insert(0..5, true);
//! range_bounds_map.insert(5..10, false);
//!
-//! assert!(range_bounds_map.overlaps(-2..12))
-//! assert!(!range_bounds_map.contains_point(20))
-//! assert!(range_bounds_map.contains_point(5))
-//!
-//! assert(range_bounds.overlapping())
-//!
-//! assert!(false)
+//! assert!(range_bounds_map.overlaps(&(-2..12)));
+//! assert!(!range_bounds_map.contains_point(&20));
+//! assert!(range_bounds_map.contains_point(&5));
//! ```
//!
//! # Example using a custom [`RangeBounds`] type
//! ```
+//! # use std::ops::RangeBounds;
+//! # use std::ops::Bound;
+//! # use range_bounds_map::RangeBoundsMap;
+//!
+//! #[derive(Debug)]
//! enum Reservation {
//! // Start, End (Inclusive-Inclusive)
//! Finite(u8, u8),
@@ -55,21 +57,38 @@ along with range_bounds_map. If not, see .
//! Infinite(u8)
//! }
//!
-//! // First we need to implement RangeBounds
-//! impl RangeBound for Reservation {
-//! fn start_bound(&self) -> Bound {
+//! // First, we need to implement RangeBounds
+//! impl RangeBounds for Reservation {
+//! fn start_bound(&self) -> Bound<&u8> {
//! match self {
-//! Reservation::Finite(start, _) => Bound::Inclusive(start),
-//! Reservation::Infinite(start) => Bound::Exclusive(start),
+//! Reservation::Finite(start, _) => Bound::Included(start),
+//! Reservation::Infinite(start) => Bound::Excluded(start),
//! }
//! }
-//! fn end_bound(&self) -> Bound {
+//! fn end_bound(&self) -> Bound<&u8> {
//! match self {
-//! Reservation::Finite(_, end) => Bound::Inclusive(end),
+//! Reservation::Finite(_, end) => Bound::Included(end),
//! Reservation::Infinite(_) => Bound::Unbounded,
//! }
//! }
//! }
+//!
+//! // Next we can create a custom typed RangeBoundsMap
+//! let mut reservations_map = RangeBoundsMap::new();
+//!
+//! reservations_map.insert(Reservation::Finite(10, 20), "Ferris".to_string());
+//! reservations_map.insert(Reservation::Infinite(20), "Corro".to_string());
+//!
+//! for (reservation, name) in reservations_map.overlapping(&(16..17)) {
+//! println!("{name} has reserved {reservation:?} inside the range 16..17");
+//! }
+//!
+//! for (reservation, name) in reservations_map.iter() {
+//! println!("{name} has reserved {reservation:?}");
+//! }
+//!
+//! assert!(reservations_map.overlaps(&Reservation::Infinite(0)));
+//! assert!(reservations_map.overlaps(&Reservation::Infinite(0)));
//! ```
//!
//!