diff --git a/Cargo.lock b/Cargo.lock
index 50d36338cd2cbed3f0e2d93934ca52b979f7edc1..397d0c7fe823af0f01e541dc8f2bde49ec43fd74 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -12175,17 +12175,12 @@ dependencies = [
 name = "pallet-assets-freezer"
 version = "0.1.0"
 dependencies = [
- "frame-benchmarking 28.0.0",
- "frame-support 28.0.0",
- "frame-system 28.0.0",
  "log",
  "pallet-assets 29.1.0",
  "pallet-balances 28.0.0",
  "parity-scale-codec",
+ "polkadot-sdk-frame 0.1.0",
  "scale-info",
- "sp-core 28.0.0",
- "sp-io 30.0.0",
- "sp-runtime 31.0.1",
 ]
 
 [[package]]
diff --git a/substrate/frame/assets-freezer/Cargo.toml b/substrate/frame/assets-freezer/Cargo.toml
index 3fffa4d0627fa22624204ac11af3c2372a1e9e02..d8c0ee6e442b269f707d03335b09734d4a140218 100644
--- a/substrate/frame/assets-freezer/Cargo.toml
+++ b/substrate/frame/assets-freezer/Cargo.toml
@@ -16,46 +16,31 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { workspace = true }
-frame-benchmarking = { optional = true, workspace = true }
-frame-support = { workspace = true }
-frame-system = { workspace = true }
+frame = { workspace = true, features = ["runtime"] }
 log = { workspace = true }
 pallet-assets = { workspace = true }
 scale-info = { features = ["derive"], workspace = true }
-sp-runtime = { workspace = true }
 
 [dev-dependencies]
 pallet-balances = { workspace = true }
-sp-core = { workspace = true }
-sp-io = { workspace = true }
 
 [features]
 default = ["std"]
 std = [
 	"codec/std",
-	"frame-benchmarking?/std",
-	"frame-support/std",
-	"frame-system/std",
+	"frame/std",
 	"log/std",
 	"pallet-assets/std",
 	"pallet-balances/std",
 	"scale-info/std",
-	"sp-core/std",
-	"sp-io/std",
-	"sp-runtime/std",
 ]
 runtime-benchmarks = [
-	"frame-benchmarking/runtime-benchmarks",
-	"frame-support/runtime-benchmarks",
-	"frame-system/runtime-benchmarks",
+	"frame/runtime-benchmarks",
 	"pallet-assets/runtime-benchmarks",
 	"pallet-balances/runtime-benchmarks",
-	"sp-runtime/runtime-benchmarks",
 ]
 try-runtime = [
-	"frame-support/try-runtime",
-	"frame-system/try-runtime",
+	"frame/try-runtime",
 	"pallet-assets/try-runtime",
 	"pallet-balances/try-runtime",
-	"sp-runtime/try-runtime",
 ]
diff --git a/substrate/frame/assets-freezer/src/impls.rs b/substrate/frame/assets-freezer/src/impls.rs
index cd383f1c3cd1e68f7cc0bcf0bb2841f0acf52119..8c9f148e1e9a4840cc398b01a938b2bbe5d8bc10 100644
--- a/substrate/frame/assets-freezer/src/impls.rs
+++ b/substrate/frame/assets-freezer/src/impls.rs
@@ -16,13 +16,7 @@
 // limitations under the License.
 
 use super::*;
-
-use frame_support::traits::{
-	fungibles::{Inspect, InspectFreeze, MutateFreeze},
-	tokens::{DepositConsequence, Fortitude, Preservation, Provenance, WithdrawConsequence},
-};
 use pallet_assets::FrozenBalance;
-use sp_runtime::traits::Zero;
 
 // Implements [`FrozenBalance`] from [`pallet-assets`], so it can understand how much of an
 // account balance is frozen, and is able to signal to this pallet when to clear the state of an
@@ -115,7 +109,7 @@ impl<T: Config<I>, I: 'static> MutateFreeze<T::AccountId> for Pallet<T, I> {
 		id: &Self::Id,
 		who: &T::AccountId,
 		amount: Self::Balance,
-	) -> sp_runtime::DispatchResult {
+	) -> DispatchResult {
 		if amount.is_zero() {
 			return Self::thaw(asset, id, who);
 		}
@@ -135,7 +129,7 @@ impl<T: Config<I>, I: 'static> MutateFreeze<T::AccountId> for Pallet<T, I> {
 		id: &Self::Id,
 		who: &T::AccountId,
 		amount: Self::Balance,
-	) -> sp_runtime::DispatchResult {
+	) -> DispatchResult {
 		if amount.is_zero() {
 			return Ok(());
 		}
@@ -150,7 +144,7 @@ impl<T: Config<I>, I: 'static> MutateFreeze<T::AccountId> for Pallet<T, I> {
 		Self::update_freezes(asset, who, freezes.as_bounded_slice())
 	}
 
-	fn thaw(asset: Self::AssetId, id: &Self::Id, who: &T::AccountId) -> sp_runtime::DispatchResult {
+	fn thaw(asset: Self::AssetId, id: &Self::Id, who: &T::AccountId) -> DispatchResult {
 		let mut freezes = Freezes::<T, I>::get(asset.clone(), who);
 		freezes.retain(|f| &f.id != id);
 		Self::update_freezes(asset, who, freezes.as_bounded_slice())
diff --git a/substrate/frame/assets-freezer/src/lib.rs b/substrate/frame/assets-freezer/src/lib.rs
index b42d41ac1d9255c0046de37ddf5cf1222173be7f..5f718ed84820f34654eeb2f475faa21982142ba7 100644
--- a/substrate/frame/assets-freezer/src/lib.rs
+++ b/substrate/frame/assets-freezer/src/lib.rs
@@ -18,10 +18,10 @@
 //! # Assets Freezer Pallet
 //!
 //! A pallet capable of freezing fungibles from `pallet-assets`. This is an extension of
-//! `pallet-assets`, wrapping [`fungibles::Inspect`](`frame_support::traits::fungibles::Inspect`).
+//! `pallet-assets`, wrapping [`fungibles::Inspect`](`Inspect`).
 //! It implements both
-//! [`fungibles::freeze::Inspect`](frame_support::traits::fungibles::freeze::Inspect) and
-//! [`fungibles::freeze::Mutate`](frame_support::traits::fungibles::freeze::Mutate). The complexity
+//! [`fungibles::freeze::Inspect`](InspectFreeze) and
+//! [`fungibles::freeze::Mutate`](MutateFreeze). The complexity
 //! of the operations is `O(n)`. where `n` is the variant count of `RuntimeFreezeReason`.
 //!
 //! ## Pallet API
@@ -35,26 +35,27 @@
 //!
 //! - Pallet hooks allowing [`pallet-assets`] to know the frozen balance for an account on a given
 //!   asset (see [`pallet_assets::FrozenBalance`]).
-//! - An implementation of
-//!   [`fungibles::freeze::Inspect`](frame_support::traits::fungibles::freeze::Inspect) and
-//!   [`fungibles::freeze::Mutate`](frame_support::traits::fungibles::freeze::Mutate), allowing
-//!   other pallets to manage freezes for the `pallet-assets` assets.
+//! - An implementation of [`fungibles::freeze::Inspect`](InspectFreeze) and
+//!   [`fungibles::freeze::Mutate`](MutateFreeze), allowing other pallets to manage freezes for the
+//!   `pallet-assets` assets.
 
 #![cfg_attr(not(feature = "std"), no_std)]
 
-use frame_support::{
-	pallet_prelude::*,
-	traits::{tokens::IdAmount, VariantCount, VariantCountOf},
-	BoundedVec,
-};
-use frame_system::pallet_prelude::BlockNumberFor;
-use sp_runtime::{
-	traits::{Saturating, Zero},
-	BoundedSlice,
+use frame::{
+	prelude::*,
+	traits::{
+		fungibles::{Inspect, InspectFreeze, MutateFreeze},
+		tokens::{
+			DepositConsequence, Fortitude, IdAmount, Preservation, Provenance, WithdrawConsequence,
+		},
+	},
 };
 
 pub use pallet::*;
 
+#[cfg(feature = "try-runtime")]
+use frame::try_runtime::TryRuntimeError;
+
 #[cfg(test)]
 mod mock;
 #[cfg(test)]
@@ -62,7 +63,7 @@ mod tests;
 
 mod impls;
 
-#[frame_support::pallet]
+#[frame::pallet]
 pub mod pallet {
 	use super::*;
 
@@ -125,7 +126,7 @@ pub mod pallet {
 	#[pallet::hooks]
 	impl<T: Config<I>, I: 'static> Hooks<BlockNumberFor<T>> for Pallet<T, I> {
 		#[cfg(feature = "try-runtime")]
-		fn try_state(_: BlockNumberFor<T>) -> Result<(), sp_runtime::TryRuntimeError> {
+		fn try_state(_: BlockNumberFor<T>) -> Result<(), TryRuntimeError> {
 			Self::do_try_state()
 		}
 	}
@@ -159,13 +160,13 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
 		Ok(())
 	}
 
-	#[cfg(any(test, feature = "try-runtime"))]
-	fn do_try_state() -> Result<(), sp_runtime::TryRuntimeError> {
+	#[cfg(feature = "try-runtime")]
+	fn do_try_state() -> Result<(), TryRuntimeError> {
 		for (asset, who, _) in FrozenBalances::<T, I>::iter() {
 			let max_frozen_amount =
 				Freezes::<T, I>::get(asset.clone(), who.clone()).iter().map(|l| l.amount).max();
 
-			frame_support::ensure!(
+			ensure!(
 				FrozenBalances::<T, I>::get(asset, who) == max_frozen_amount,
 				"The `FrozenAmount` is not equal to the maximum amount in `Freezes` for (`asset`, `who`)"
 			);
diff --git a/substrate/frame/assets-freezer/src/mock.rs b/substrate/frame/assets-freezer/src/mock.rs
index bc903a018f7b8f6962d721f4160ac6cdfa35bbf2..ad08787aba27d95917fd6ac357a23d318eec28d5 100644
--- a/substrate/frame/assets-freezer/src/mock.rs
+++ b/substrate/frame/assets-freezer/src/mock.rs
@@ -20,23 +20,15 @@
 use crate as pallet_assets_freezer;
 pub use crate::*;
 use codec::{Compact, Decode, Encode, MaxEncodedLen};
-use frame_support::{
-	derive_impl,
-	traits::{AsEnsureOriginWithArg, ConstU64},
-};
+use frame::testing_prelude::*;
 use scale_info::TypeInfo;
-use sp_core::{ConstU32, H256};
-use sp_runtime::{
-	traits::{BlakeTwo256, IdentityLookup},
-	BuildStorage,
-};
 
 pub type AccountId = u64;
 pub type Balance = u64;
 pub type AssetId = u32;
 type Block = frame_system::mocking::MockBlock<Test>;
 
-frame_support::construct_runtime!(
+construct_runtime!(
 	pub enum Test
 	{
 		System: frame_system,
@@ -48,7 +40,7 @@ frame_support::construct_runtime!(
 
 #[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
 impl frame_system::Config for Test {
-	type BaseCallFilter = frame_support::traits::Everything;
+	type BaseCallFilter = Everything;
 	type BlockWeights = ();
 	type BlockLength = ();
 	type DbWeight = ();
@@ -70,7 +62,7 @@ impl frame_system::Config for Test {
 	type SystemWeightInfo = ();
 	type SS58Prefix = ();
 	type OnSetCode = ();
-	type MaxConsumers = frame_support::traits::ConstU32<16>;
+	type MaxConsumers = ConstU32<16>;
 }
 
 impl pallet_balances::Config for Test {
@@ -132,7 +124,7 @@ impl Config for Test {
 	type RuntimeEvent = RuntimeEvent;
 }
 
-pub fn new_test_ext(execute: impl FnOnce()) -> sp_io::TestExternalities {
+pub fn new_test_ext(execute: impl FnOnce()) -> TestExternalities {
 	let t = RuntimeGenesisConfig {
 		assets: pallet_assets::GenesisConfig {
 			assets: vec![(1, 0, true, 1)],
@@ -145,11 +137,12 @@ pub fn new_test_ext(execute: impl FnOnce()) -> sp_io::TestExternalities {
 	}
 	.build_storage()
 	.unwrap();
-	let mut ext: sp_io::TestExternalities = t.into();
+	let mut ext: TestExternalities = t.into();
 	ext.execute_with(|| {
 		System::set_block_number(1);
 		execute();
-		frame_support::assert_ok!(AssetsFreezer::do_try_state());
+		#[cfg(feature = "try-runtime")]
+		assert_ok!(AssetsFreezer::do_try_state());
 	});
 
 	ext
diff --git a/substrate/frame/assets-freezer/src/tests.rs b/substrate/frame/assets-freezer/src/tests.rs
index 4f2dea79c705a9ecacba4ec427f2f8553920f9a1..b890dc98b574127fa25c488841236f4fc3a99d4c 100644
--- a/substrate/frame/assets-freezer/src/tests.rs
+++ b/substrate/frame/assets-freezer/src/tests.rs
@@ -17,22 +17,16 @@
 
 //! Tests for pallet-assets-freezer.
 
-use crate::mock::*;
+use crate::mock::{self, *};
 
 use codec::Compact;
-use frame_support::{
-	assert_ok, assert_storage_noop,
-	traits::{
-		fungibles::{Inspect, InspectFreeze, MutateFreeze},
-		tokens::{Fortitude, Preservation},
-	},
-};
+use frame::testing_prelude::*;
 use pallet_assets::FrozenBalance;
 
 const WHO: AccountId = 1;
-const ASSET_ID: AssetId = 1;
+const ASSET_ID: mock::AssetId = 1;
 
-fn test_set_freeze(id: DummyFreezeReason, amount: Balance) {
+fn test_set_freeze(id: DummyFreezeReason, amount: mock::Balance) {
 	let mut freezes = Freezes::<Test>::get(ASSET_ID, WHO);
 
 	if let Some(i) = freezes.iter_mut().find(|l| l.id == id) {
@@ -281,8 +275,6 @@ mod impl_mutate_freeze {
 }
 
 mod with_pallet_assets {
-	use frame_support::assert_noop;
-
 	use super::*;
 
 	#[test]
diff --git a/substrate/frame/src/lib.rs b/substrate/frame/src/lib.rs
index 18c7bd1239443643a9f86762c542f25f23086a75..1c4b2ed5b821d56a4e320cbc7ae272561c6ee904 100644
--- a/substrate/frame/src/lib.rs
+++ b/substrate/frame/src/lib.rs
@@ -202,12 +202,10 @@ pub mod prelude {
 	/// Dispatch types from `frame-support`, other fundamental traits
 	#[doc(no_inline)]
 	pub use frame_support::dispatch::{GetDispatchInfo, PostDispatchInfo};
-	pub use frame_support::{
-		defensive, defensive_assert,
-		traits::{
-			Contains, EitherOf, EstimateNextSessionRotation, IsSubType, MapSuccess, NoOpPoll,
-			OnRuntimeUpgrade, OneSessionHandler, RankedMembers, RankedMembersSwapHandler,
-		},
+	pub use frame_support::traits::{
+		Contains, EitherOf, EstimateNextSessionRotation, Everything, IsSubType, MapSuccess,
+		NoOpPoll, OnRuntimeUpgrade, OneSessionHandler, RankedMembers, RankedMembersSwapHandler,
+		VariantCount, VariantCountOf,
 	};
 
 	/// Pallet prelude of `frame-system`.
@@ -225,6 +223,9 @@ pub mod prelude {
 	/// All hashing related things
 	pub use super::hashing::*;
 
+	/// All account related things.
+	pub use super::account::*;
+
 	/// All arithmetic types and traits used for safe math.
 	pub use super::arithmetic::*;
 
@@ -234,6 +235,10 @@ pub mod prelude {
 		BlockNumberProvider, Bounded, Convert, DispatchInfoOf, Dispatchable, ReduceBy,
 		ReplaceWithDefault, SaturatedConversion, Saturating, StaticLookup, TrailingZeroInput,
 	};
+
+	/// Bounded storage related types.
+	pub use sp_runtime::{BoundedSlice, BoundedVec};
+
 	/// Other error/result types for runtime
 	#[doc(no_inline)]
 	pub use sp_runtime::{
@@ -321,7 +326,7 @@ pub mod testing_prelude {
 	/// Other helper macros from `frame_support` that help with asserting in tests.
 	pub use frame_support::{
 		assert_err, assert_err_ignore_postinfo, assert_error_encoded_size, assert_noop, assert_ok,
-		assert_storage_noop, hypothetically, storage_alias,
+		assert_storage_noop, ensure, hypothetically, storage_alias,
 	};
 
 	pub use frame_system::{self, mocking::*, RunToBlockHooks};
@@ -551,6 +556,16 @@ pub mod hashing {
 	pub use sp_runtime::traits::{BlakeTwo256, Hash, Keccak256};
 }
 
+/// All account management related traits.
+///
+/// This is already part of the [`prelude`].
+pub mod account {
+	pub use frame_support::traits::{
+		AsEnsureOriginWithArg, ChangeMembers, EitherOfDiverse, InitializeMembers,
+	};
+	pub use sp_runtime::traits::{IdentifyAccount, IdentityLookup};
+}
+
 /// Access to all of the dependencies of this crate. In case the prelude re-exports are not enough,
 /// this module can be used.
 ///