diff --git a/src/Aggregation/AbstractAggregation.php b/src/Aggregation/AbstractAggregation.php
index 32977f49cd33dbdd3bcf33456c032674f3bb0965..fe59853712605be51d692b95a55a1feb3ad50a07 100644
--- a/src/Aggregation/AbstractAggregation.php
+++ b/src/Aggregation/AbstractAggregation.php
@@ -12,14 +12,14 @@
 namespace ONGR\ElasticsearchDSL\Aggregation;
 
 use ONGR\ElasticsearchDSL\BuilderBag;
-use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\NameAwareTrait;
+use ONGR\ElasticsearchDSL\NamedBuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 
 /**
  * AbstractAggregation class.
  */
-abstract class AbstractAggregation implements BuilderInterface
+abstract class AbstractAggregation implements NamedBuilderInterface
 {
     use ParametersTrait;
     use NameAwareTrait;
@@ -93,7 +93,7 @@ abstract class AbstractAggregation implements BuilderInterface
     /**
      * Returns all sub aggregations.
      *
-     * @return BuilderBag[]|BuilderInterface[]
+     * @return BuilderBag[]|NamedBuilderInterface[]
      */
     public function getAggregations()
     {
@@ -108,7 +108,7 @@ abstract class AbstractAggregation implements BuilderInterface
      * Returns sub aggregation.
      * @param string $name Aggregation name to return.
      *
-     * @return AbstractAggregation|BuilderInterface|null
+     * @return AbstractAggregation|NamedBuilderInterface|null
      */
     public function getAggregation($name)
     {
diff --git a/src/FieldAwareTrait.php b/src/FieldAwareTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..3316e51c66b2a447e332388c2bef1c9b5244ef8e
--- /dev/null
+++ b/src/FieldAwareTrait.php
@@ -0,0 +1,36 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL;
+
+trait FieldAwareTrait
+{
+    /**
+     * @var string
+     */
+    private $field;
+
+    /**
+     * @return mixed
+     */
+    public function getField()
+    {
+        return $this->field;
+    }
+
+    /**
+     * @param mixed $field
+     */
+    public function setField($field)
+    {
+        $this->field = $field;
+    }
+}
diff --git a/src/InnerHit/NestedInnerHit.php b/src/InnerHit/NestedInnerHit.php
index e04707adb4e04cfadeb3214291264fb5602417f5..e52ca710c1f90b21b5b35c7bc3ff3e0c992f7537 100644
--- a/src/InnerHit/NestedInnerHit.php
+++ b/src/InnerHit/NestedInnerHit.php
@@ -11,8 +11,8 @@
 
 namespace ONGR\ElasticsearchDSL\InnerHit;
 
-use ONGR\ElasticsearchDSL\BuilderInterface;
 use ONGR\ElasticsearchDSL\NameAwareTrait;
+use ONGR\ElasticsearchDSL\NamedBuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 use ONGR\ElasticsearchDSL\Search;
 
@@ -21,7 +21,7 @@ use ONGR\ElasticsearchDSL\Search;
  *
  * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-inner-hits.html
  */
-class NestedInnerHit implements BuilderInterface
+class NestedInnerHit implements NamedBuilderInterface
 {
     use ParametersTrait;
     use NameAwareTrait;
diff --git a/src/NamedBuilderInterface.php b/src/NamedBuilderInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..b9df4322e61f98b1a72fd4add71e651cb821c581
--- /dev/null
+++ b/src/NamedBuilderInterface.php
@@ -0,0 +1,25 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL;
+
+/**
+ * Interface NamedBuilderInterface.
+ */
+interface NamedBuilderInterface extends BuilderInterface
+{
+    /**
+     * Returns element name.
+     *
+     * @return string
+     */
+    public function getName();
+}
diff --git a/src/Search.php b/src/Search.php
index 1a1b51b96472457ce38e7b77f29504dfd875f229..9d140f20e2125396a145febfc29d88e016603a4b 100644
--- a/src/Search.php
+++ b/src/Search.php
@@ -412,7 +412,7 @@ class Search
     *
     * @return $this
     */
-    public function addSuggest(BuilderInterface $suggest)
+    public function addSuggest(NamedBuilderInterface $suggest)
     {
         $this->getEndpoint(SuggestEndpoint::NAME)->add($suggest, $suggest->getName());
 
diff --git a/src/Suggest/Suggest.php b/src/Suggest/Suggest.php
index f7951308806db011a8ccfa81dd723561303c56d7..5baab7038454f3f0283ad720c454cc41a96defd8 100644
--- a/src/Suggest/Suggest.php
+++ b/src/Suggest/Suggest.php
@@ -11,11 +11,11 @@
 
 namespace ONGR\ElasticsearchDSL\Suggest;
 
-use ONGR\ElasticsearchDSL\BuilderInterface;
+use ONGR\ElasticsearchDSL\NamedBuilderInterface;
 use ONGR\ElasticsearchDSL\ParametersTrait;
 use Symfony\Component\Serializer\Exception\InvalidArgumentException;
 
-class Suggest implements BuilderInterface
+class Suggest implements NamedBuilderInterface
 {
     use ParametersTrait;