diff --git a/src/Binding/Loader/OrderedBindingLoader.php b/src/Binding/Loader/OrderedBindingLoader.php
new file mode 100644
index 0000000000000000000000000000000000000000..6ec899af63ae090ca8cd58d1df0c9a8214c04b18
--- /dev/null
+++ b/src/Binding/Loader/OrderedBindingLoader.php
@@ -0,0 +1,27 @@
+<?php
+declare( strict_types=1 );
+
+namespace WPDesk\Init\Binding\Loader;
+
+final class OrderedBindingLoader implements BindingDefinitions {
+
+	private BindingDefinitions $loader;
+
+	public function __construct( BindingDefinitions $loader ) {
+		$this->loader = $loader;
+	}
+
+	public function load(): iterable {
+		$definitions = [];
+		foreach ( $this->loader->load() as $def ) {
+			$definitions[] = $def;
+		}
+
+		usort(
+			$definitions,
+			fn ( $a, $b ) => $a->option( 'priority' ) <=> $b->option( 'priority' )
+		);
+
+		yield from array_reverse( $definitions, false );
+	}
+}