diff --git a/src/Binding/Binder.php b/src/Binding/Binder.php
index 3997c59c87bee421689b8e49a991de8a233e4c01..0dc334f13f1d4aa581da04fd090154b9dc5e12ed 100644
--- a/src/Binding/Binder.php
+++ b/src/Binding/Binder.php
@@ -6,7 +6,5 @@ namespace WPDesk\Init\Binding;
 
 interface Binder {
 
-	public function can_bind( Definition $def ): bool;
-
 	public function bind( Definition $def ): void;
 }
diff --git a/src/Binding/Binder/CallableBinder.php b/src/Binding/Binder/CallableBinder.php
index f0561b5901f32c710c2a7f72f73685abc6298e83..70858003a1e18d85843bd9deb98c58037ee913f8 100644
--- a/src/Binding/Binder/CallableBinder.php
+++ b/src/Binding/Binder/CallableBinder.php
@@ -5,11 +5,11 @@ declare(strict_types=1);
 namespace WPDesk\Init\Binding\Binder;
 
 use Psr\Container\ContainerInterface;
-use WPDesk\Init\Binding\Binder;
+use WPDesk\Init\Binding\ComposableBinder;
 use WPDesk\Init\Binding\Definition;
 use WPDesk\Init\Binding\Definition\CallableDefinition;
 
-class CallableBinder implements Binder {
+class CallableBinder implements ComposableBinder {
 
 	/** @var ContainerInterface */
 	private $container;
@@ -23,13 +23,11 @@ class CallableBinder implements Binder {
 	}
 
 	public function bind( Definition $def ): void {
-		if ( $def instanceof CallableDefinition ) {
-			$ref        = new \ReflectionFunction( $def->value() );
-			$parameters = [];
-			foreach ( $ref->getParameters() as $ref_param ) {
-				$parameters[] = $this->container->get( $ref_param->getType()->getName() );
-			}
-			$ref->invokeArgs( $parameters );
+		$ref        = new \ReflectionFunction( $def->value() );
+		$parameters = [];
+		foreach ( $ref->getParameters() as $ref_param ) {
+		$parameters[] = $this->container->get( $ref_param->getType()->getName() );
 		}
+		$ref->invokeArgs( $parameters );
 	}
 }
diff --git a/src/Binding/Binder/CompositeBinder.php b/src/Binding/Binder/CompositeBinder.php
index 569b3fcc868391437ef92a43dd0df16c01225fe4..8b88634687b2fbb7b07c99b710db520398b33c2f 100644
--- a/src/Binding/Binder/CompositeBinder.php
+++ b/src/Binding/Binder/CompositeBinder.php
@@ -21,16 +21,6 @@ final class CompositeBinder implements Binder {
 		$this->binders[] = $binder;
 	}
 
-	public function can_bind( Definition $def ): bool {
-		foreach ( $this->binders as $binder ) {
-			if ( $binder->can_bind( $def ) ) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
 	public function bind( Definition $def ): void {
 		foreach ( $this->binders as $binder ) {
 			if ( $binder->can_bind( $def ) ) {
diff --git a/src/Binding/Binder/HookableBinder.php b/src/Binding/Binder/HookableBinder.php
index c0d7a7af87732d8ab2c933f9765e616272d62e7a..f8426dacddff213d58bdd0be5e9f0d68fb9ffaee 100644
--- a/src/Binding/Binder/HookableBinder.php
+++ b/src/Binding/Binder/HookableBinder.php
@@ -5,11 +5,11 @@ declare(strict_types=1);
 namespace WPDesk\Init\Binding\Binder;
 
 use Psr\Container\ContainerInterface;
-use WPDesk\Init\Binding\Binder;
+use WPDesk\Init\Binding\ComposableBinder;
 use WPDesk\Init\Binding\Definition;
 use WPDesk\Init\Binding\Definition\HookableDefinition;
 
-class HookableBinder implements Binder {
+class HookableBinder implements ComposableBinder {
 
 	/** @var ContainerInterface */
 	private $container;
@@ -23,8 +23,6 @@ class HookableBinder implements Binder {
 	}
 
 	public function bind( Definition $def ): void {
-		if ( $def instanceof HookableDefinition ) {
-			$this->container->get( $def->value() )->hooks();
-		}
+		$this->container->get( $def->value() )->hooks();
 	}
 }
diff --git a/src/Binding/Binder/StoppableBinder.php b/src/Binding/Binder/StoppableBinder.php
index 3b15700294fb71db32d352d0e0299de9460e7150..e74c7e08218e6ea870772e7c519053ed1a9c5721 100644
--- a/src/Binding/Binder/StoppableBinder.php
+++ b/src/Binding/Binder/StoppableBinder.php
@@ -5,12 +5,12 @@ declare(strict_types=1);
 namespace WPDesk\Init\Binding\Binder;
 
 use Psr\Container\ContainerInterface;
-use WPDesk\Init\Binding\Binder;
+use WPDesk\Init\Binding\ComposableBinder;
 use WPDesk\Init\Binding\StoppableBinder as Stop;
 use WPDesk\Init\Binding\Definition;
 use WPDesk\Init\Binding\Definition\HookableDefinition;
 
-class StoppableBinder implements Binder {
+class StoppableBinder implements ComposableBinder {
 
 	/** @var ContainerInterface */
 	private $container;
diff --git a/src/Binding/ComposableBinder.php b/src/Binding/ComposableBinder.php
new file mode 100644
index 0000000000000000000000000000000000000000..8498244e65ee2970b27a9e3729dc26e546d4f64c
--- /dev/null
+++ b/src/Binding/ComposableBinder.php
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+
+namespace WPDesk\Init\Binding;
+
+/**
+ * Can be composed with other binders within {@see CompositeBinder} class.
+ */
+interface ComposableBinder extends Binder {
+
+	public function can_bind( Definition $def ): bool;
+}
diff --git a/src/Binding/Loader/ArrayBindingLoader.php b/src/Binding/Loader/ArrayDefinitions.php
similarity index 100%
rename from src/Binding/Loader/ArrayBindingLoader.php
rename to src/Binding/Loader/ArrayDefinitions.php