diff --git a/src/trees/bp_tree.rs b/src/bp_tree.rs
similarity index 99%
rename from src/trees/bp_tree.rs
rename to src/bp_tree.rs
index 233ea72fbe5c181e22129dfdd57ca1f67a922c3f..aeae3755d17dc32f1dd44fbd46221890a77a3018 100644
--- a/src/trees/bp_tree.rs
+++ b/src/bp_tree.rs
@@ -17,7 +17,7 @@
 //! use bv::BitVec;
 //! use bv::Bits;
 //! use fp_succinct_trees_1::common::succinct_tree::SuccinctTree;
-//! use fp_succinct_trees_1::trees::bp_tree::BPTree;
+//! use fp_succinct_trees_1::bp_tree::BPTree;
 //!
 //! let bitvec = bit_vec!(true, true, false, false);
 //! let tree: BPTree<i32> = BPTree::from_bitvec(bitvec.clone()).unwrap();
@@ -32,8 +32,8 @@ use bv::Bits;
 use common::errors::EmptyTreeError;
 use common::errors::InvalidBitvecError;
 use common::errors::NodeError;
+use common::min_max::MinMax;
 use common::succinct_tree::SuccinctTree;
-use datastructures::min_max::MinMax;
 use failure::{Error, ResultExt};
 use id_tree::Node;
 use id_tree::NodeId;
diff --git a/src/datastructures/min_max.rs b/src/common/min_max.rs
similarity index 99%
rename from src/datastructures/min_max.rs
rename to src/common/min_max.rs
index 23dd6705712d8d9bae1035292e643c5c52b380e9..7ce0edde9c18b3510c18be98c7e5122d9da17332 100644
--- a/src/datastructures/min_max.rs
+++ b/src/common/min_max.rs
@@ -15,7 +15,7 @@
 //! # fn main() {
 //! use bv::BitVec;
 //! use bv::Bits;
-//! use fp_succinct_trees_1::datastructures::min_max::MinMax;
+//! use fp_succinct_trees_1::common::min_max::MinMax;
 //!
 //! let bits = bit_vec![true, false];
 //!        let min_max = MinMax::new(bits, 2);
diff --git a/src/common/mod.rs b/src/common/mod.rs
index eb9a59355b8e08cd0e425a534557f374bddaa666..d8c351040aefc63adacafe40e100024a3f8850f5 100644
--- a/src/common/mod.rs
+++ b/src/common/mod.rs
@@ -1,2 +1,3 @@
 pub mod errors;
+pub mod min_max;
 pub mod succinct_tree;
diff --git a/src/datastructures/mod.rs b/src/datastructures/mod.rs
deleted file mode 100644
index cfc5d468c33a0d15aeb52fe775c3ca9a745cd030..0000000000000000000000000000000000000000
--- a/src/datastructures/mod.rs
+++ /dev/null
@@ -1 +0,0 @@
-pub mod min_max;
diff --git a/src/lib.rs b/src/lib.rs
index 9fbd4888ca227e4af0159038fb78450a8bc74119..e8d653be444e19d3a80f403e4d5b1ae8265284c5 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -4,7 +4,7 @@
 // except according to those terms.
 
 //! Succinct Tree library with implementations for the succinct trees LOUDS and BP
-//! and the Range-Min-Max data structure used by BP. LOUDS and BP also use the 
+//! and the Range-Min-Max data structure used by BP. LOUDS and BP also use the
 //! Rank/Select data structure from the Rust-Bio crate.
 //! Code examples can be found in the submodules.
 
@@ -19,6 +19,6 @@ extern crate serde_derive;
 extern crate bincode;
 extern crate serde;
 
+pub mod bp_tree;
 pub mod common;
-pub mod datastructures;
-pub mod trees;
+pub mod louds_tree;
diff --git a/src/trees/louds_tree.rs b/src/louds_tree.rs
similarity index 99%
rename from src/trees/louds_tree.rs
rename to src/louds_tree.rs
index ba7478cfd77215b9640154f325575d0a5354da05..814f424c5a62e828e2da1367fe7f0b9dbcbafec3 100644
--- a/src/trees/louds_tree.rs
+++ b/src/louds_tree.rs
@@ -16,7 +16,7 @@
 //! use bv::BitVec;
 //! use bv::Bits;
 //! use fp_succinct_trees_1::common::succinct_tree::SuccinctTree;
-//! use fp_succinct_trees_1::trees::louds_tree::LOUDSTree;
+//! use fp_succinct_trees_1::louds_tree::LOUDSTree;
 //!
 //! let bitvec = bit_vec![true, true, false, false];
 //! let tree: LOUDSTree<i32> = LOUDSTree::from_bitvec(bitvec.clone()).unwrap();
diff --git a/src/trees/mod.rs b/src/trees/mod.rs
deleted file mode 100644
index bc27e1625b98507223c4e3b90450836ecb3c8047..0000000000000000000000000000000000000000
--- a/src/trees/mod.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub mod bp_tree;
-pub mod louds_tree;