diff --git a/src/Resolver/ChainResolver.php b/src/Resolver/ChainResolver.php
new file mode 100644
index 0000000000000000000000000000000000000000..eaa394f1d761aa032fa3da442540bbfdeadb20a3
--- /dev/null
+++ b/src/Resolver/ChainResolver.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace WPDesk\View\Resolver;
+
+
+use WPDesk\View\Renderer\Renderer;
+use WPDesk\View\Resolver\Exception\CanNotResolve;
+
+/**
+ * Provide resolvers and this class can try them one after another
+ *
+ * @package WPDesk\View\Resolver
+ */
+class ChainResolver implements Resolver
+{
+    /** @var Resolver[] */
+    private $resolvers;
+
+    /**
+     * Warning: function with variadic input. Input should be list of Resolver instances.
+     */
+    public function __construct()
+    {
+        $args = func_get_args();
+        foreach ($args as $resolver) {
+            $this->appendResolver($resolver);
+        }
+    }
+
+    /**
+     * Append resolver to the end of the list
+     *
+     * @param Resolver $resolver
+     */
+    public function appendResolver( $resolver)
+    {
+        $this->resolvers[] = $resolver;
+    }
+
+    /**
+     * Resolve name to full path
+     *
+     * @param string $name
+     * @param Renderer|null $renderer
+     *
+     * @return string
+     */
+    public function resolve($name, Renderer $renderer = null)
+    {
+        foreach ($this->resolvers as $resolver) {
+            try {
+                return $resolver->resolve($name);
+            } catch (CanNotResolve $e) {
+                // not interested
+            }
+        }
+
+        throw new CanNotResolve("Cannot resolve {$name}");
+    }
+
+}
diff --git a/src/Resolver/DirResolver.php b/src/Resolver/DirResolver.php
index f4ab594a9b17e825e336546ab3cfcbb9dbf717f3..5122631eb9b78ec3a32efc900a1e4468acd294bd 100644
--- a/src/Resolver/DirResolver.php
+++ b/src/Resolver/DirResolver.php
@@ -21,7 +21,7 @@ class DirResolver implements Resolver
     /**
      * Base path for templates ie. subdir
      *
-     * @param $template_base_path
+     * @param $dir
      */
     public function __construct($dir)
     {
diff --git a/src/Resolver/NullResolver.php b/src/Resolver/NullResolver.php
new file mode 100644
index 0000000000000000000000000000000000000000..4f69832fb4944bb87ecc7f1706ea3dd1c8790ece
--- /dev/null
+++ b/src/Resolver/NullResolver.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace WPDesk\View\Resolver;
+
+
+use WPDesk\View\Renderer\Renderer;
+use WPDesk\View\Resolver\Exception\CanNotResolve;
+
+/**
+ * This resolver never finds the file
+ *
+ * @package WPDesk\View\Resolver
+ */
+class NullResolver implements Resolver
+{
+
+    public function resolve($name, Renderer $renderer = null)
+    {
+        throw new CanNotResolve("Null Cannot resolve");
+    }
+
+}