diff --git a/srml/support/src/lib.rs b/srml/support/src/lib.rs
index e467dc06795de..f4da761ea0db5 100644
--- a/srml/support/src/lib.rs
+++ b/srml/support/src/lib.rs
@@ -63,6 +63,8 @@ mod hashable;
mod event;
#[macro_use]
pub mod metadata;
+#[macro_use]
+mod origin;
pub use self::storage::{StorageVec, StorageList, StorageValue, StorageMap};
pub use self::hashable::Hashable;
@@ -120,73 +122,3 @@ macro_rules! assert_ok {
#[derive(Clone, Eq, PartialEq)]
#[cfg_attr(feature = "std", derive(Debug))]
pub enum Void {}
-
-#[macro_export]
-macro_rules! impl_outer_origin {
- ($(#[$attr:meta])* pub enum $name:ident for $trait:ident where system = $system:ident { $( $module:ident ),* }) => {
- // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted.
- #[derive(Clone, PartialEq, Eq)]
- #[cfg_attr(feature = "std", derive(Debug))]
- $(#[$attr])*
- #[allow(non_camel_case_types)]
- pub enum $name {
- system($system::Origin<$trait>),
- $(
- $module($module::Origin),
- )*
- #[allow(dead_code)]
- Void($crate::Void)
- }
- #[allow(dead_code)]
- impl $name {
- pub const INHERENT: Self = $name::system($system::RawOrigin::Inherent);
- pub const ROOT: Self = $name::system($system::RawOrigin::Root);
- pub fn signed(by: <$trait as $system::Trait>::AccountId) -> Self {
- $name::system($system::RawOrigin::Signed(by))
- }
- }
- impl From<$system::Origin<$trait>> for $name {
- fn from(x: $system::Origin<$trait>) -> Self {
- $name::system(x)
- }
- }
- impl Into