diff --git a/src/mode.rs b/src/mode.rs
index 008db44..e2a2a41 100644
--- a/src/mode.rs
+++ b/src/mode.rs
@@ -191,3 +191,12 @@ pub trait ParseModeExt: ParseMode {
 }
 
 impl<F: ParseMode> ParseModeExt for F {}
+
+/// For auto-implementing [`FactoryParse`] and [`Atomic`].
+///
+/// [`FactoryParse`]: crate::rcore::FactoryParse
+/// [`Atomic`]: crate::rstd::atomic::Atomic
+pub trait ImplMode {
+    /// Same as [`ParseMode::Mode`]
+    type Mode: ?Sized + Mode;
+}
diff --git a/src/rcore.rs b/src/rcore.rs
index 8201285..36fa114 100644
--- a/src/rcore.rs
+++ b/src/rcore.rs
@@ -35,7 +35,7 @@ pub use self::inctx::InCtx;
 pub use self::inlining::{Inlining, InliningExt, InliningResultExt};
 pub use self::modes::{
     CRegularFactory, ExtensionResultM, ExtensionSourceM, FactoryModeParse, FactoryModeProxy,
-    ImplMode, ModeResultM, RegularFactory, RegularMode, WithMode, WithParseMode,
+    ModeResultM, RegularFactory, RegularMode, WithMode, WithParseMode,
 };
 pub use self::origin::{OFctr, Origin};
 pub use self::point::Point;
diff --git a/src/rcore/modes.rs b/src/rcore/modes.rs
index 6f0ad1f..ec00707 100644
--- a/src/rcore/modes.rs
+++ b/src/rcore/modes.rs
@@ -2,14 +2,6 @@ use std::marker::PhantomData;
 
 use super::*;
 
-/// For auto-implementing [`FactoryParse`] and [`Atomic`].
-///
-/// [`Atomic`]: crate::rstd::atomic::Atomic
-pub trait ImplMode {
-    /// Same as [`ParseMode::Mode`]
-    type Mode: ?Sized + Mode;
-}
-
 /// Used with [`WithMode`] for linking [`ImplMode`] to [`FactoryParse`] and [`Atomic`].
 ///
 /// [`Atomic`]: crate::rstd::atomic::Atomic
diff --git a/src/rstd/collections/tree.rs b/src/rstd/collections/tree.rs
index 6137cb5..23a5a1b 100644
--- a/src/rstd/collections/tree.rs
+++ b/src/rstd/collections/tree.rs
@@ -4,6 +4,7 @@ use std::{error::Error, fmt::Display};
 
 use crate::{
     flow::binary::*,
+    mode::*,
     rcore::*,
     rstd::{atomic::au64::*, inlining::*, nullable::*, point::*},
 };
diff --git a/src/rstd/nullable.rs b/src/rstd/nullable.rs
index b073c58..3969a95 100644
--- a/src/rstd/nullable.rs
+++ b/src/rstd/nullable.rs
@@ -1,6 +1,7 @@
 //! This module introduces [`Option`]-like concepts into RADN typesystem using [`Nullable`].
 
 use crate::func::context::*;
+use crate::mode::*;
 use crate::rcore::*;
 
 use super::{inlining::*, point::*, *};
diff --git a/src/rstd/point.rs b/src/rstd/point.rs
index d8398b9..24ddb2f 100644
--- a/src/rstd/point.rs
+++ b/src/rstd/point.rs
@@ -2,6 +2,7 @@
 
 use std::{error::Error, fmt::Display};
 
+use crate::mode::*;
 use crate::rcore::*;
 use crate::rstd::inlining::*;
 
diff --git a/src/rstd/typeless.rs b/src/rstd/typeless.rs
index 56dd692..e8a18ad 100644
--- a/src/rstd/typeless.rs
+++ b/src/rstd/typeless.rs
@@ -3,6 +3,7 @@
 //! [`rcore`]: crate::rcore
 
 use super::{cast::CastError, wrapped_origin::*, *};
+use crate::mode::*;
 
 type TypelessSerialize<'a> = dyn 'a + Fn(&mut dyn Serializer);