diff --git a/custom_solr_search.module b/custom_solr_search.module
index 67d6fdc..e125cdc 100644
--- a/custom_solr_search.module
+++ b/custom_solr_search.module
@@ -27,18 +27,16 @@ function custom_solr_search_help($route_name, RouteMatchInterface $route_match)
  * Implements hook_theme().
  */
 function custom_solr_search_theme($existing, $type, $theme, $path) {
-  return array(
-    'custom_solr_search_result' => array(
+  return array (
+    'custom_solr_search_result_item' => array(
       'variables' => array(
         'url' => NULL,
         'title' => NULL,
         'author' => NULL,
         'publishDate' => NULL,
         'publisher' => NULL,
-        'topic' => NULL
+        'topic' => NULL,
       ),
-      'path' => $path . '/templates',
-      'template' => 'custom-solr-search-result',
     ),
   );
 }
\ No newline at end of file
diff --git a/src/Controller/BasicSearch.php b/src/Controller/BasicSearch.php
index c7f3dc2..9f03ee3 100644
--- a/src/Controller/BasicSearch.php
+++ b/src/Controller/BasicSearch.php
@@ -46,7 +46,7 @@ class BasicSearch extends ControllerBase {
           $title = $result->label;
         }
         $render['result'][] = array(
-          '#theme' => 'custom_solr_search_result',
+          '#theme' => 'custom_solr_search_result_item',
           '#url' => $result->url[0],
           '#title' => $title,
           '#author' => $result->author_sort,
diff --git a/src/Plugin/Block/CustomSolrSearchResultBlock.php b/src/Plugin/Block/CustomSolrSearchResultBlock.php
new file mode 100644
index 0000000..902ed25
--- /dev/null
+++ b/src/Plugin/Block/CustomSolrSearchResultBlock.php
@@ -0,0 +1,154 @@
+<?php
+
+namespace Drupal\custom_solr_search\Plugin\Block;
+
+use Drupal\Core\Block\BlockBase;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\custom_solr_search\SolrServerDetails;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\custom_solr_search\Search;
+
+/**
+ * Provides a 'Result' Block
+ *
+ * @Block(
+ *   id = "custom_solr_search_result_block",
+ *   admin_label = @Translation("Custom SOLR Search Result block"),
+ * )
+ */
+class CustomSolrSearchResultBlock extends BlockBase implements ContainerFactoryPluginInterface {
+  /**
+   * \Drupal\custom_solr_search\Search definition.
+   *
+   * @var \Drupal\custom_solr_search\Search
+   */
+  protected $search;
+
+  /**
+   * \Drupal\custom_solr_search\SolrServerDetails definition.
+   *
+   * @var \Drupal\custom_solr_search\SolrServerDetails
+   */
+  protected $serverDetails;
+
+  /**
+   * Construct.
+   *
+   * @param array $configuration
+   *   A configuration array containing information about the plugin instance.
+   * @param string $plugin_id
+   *   The plugin_id for the plugin instance.
+   * @param string $plugin_definition
+   *   The plugin implementation definition.
+   * @param \Drupal\custom_solr_search\Search $search
+   *   Custom Solr search service
+   * @param \Drupal\custom_solr_search\SolrServerDetails $serverDetails
+   *   Custom Solr server details service
+   */
+  public function __construct(
+    array $configuration,
+    $plugin_id,
+    $plugin_definition,
+    Search $search,
+    SolrServerDetails $serverDetails
+  ) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition);
+    $this->search = $search;
+    $this->serverDetails = $serverDetails;
+  }
+  /**
+   * {@inheritdoc}
+   */
+  public function blockForm($form, FormStateInterface $form_state) {
+    $form = parent::blockForm($form, $form_state);
+
+    // Get the Core Details.
+    $servers = $this->serverDetails->getServers();
+
+    // Get the configurations.
+    $config = $this->getConfiguration();
+    
+    $form['custom_block_servers'] = [
+      '#type' => 'select',
+      '#title' => $this->t('Select Server Name'),
+      '#options' => $servers,
+      '#default_value' => isset($config['custom_block_servers']) ? $config['custom_block_servers'] : '',
+    ];
+
+    return $form;
+  }
+  
+  /**
+   * {@inheritdoc}
+   */
+  public function blockSubmit($form, FormStateInterface $form_state) {
+    $this->setConfigurationValue('custom_block_servers', $form_state->getValue('custom_block_servers'));
+  }
+  
+  /**
+   * {@inheritdoc}
+   */
+  public function build() {
+    $path = \Drupal::request()->getPathInfo();
+    $args = explode('/', $path);
+    $keyword = $args[4];
+    $config = $this->getConfiguration();
+    $server = $config['custom_block_servers'];
+    $results = $this->search->basicSearch($keyword, 0, 5, $server);
+
+    // Format result to display as unformatted list.
+    foreach ($results as $result) {
+      if (!empty($result)) {
+        if (isset($result->title)) {
+          $title = $result->title;
+        }
+        else {
+          $title = $result->label;
+        }
+
+        $result_item = array(
+          '#theme' => 'custom_solr_search_result_item',
+          '#url' => $result->url[0],
+          '#title' => $title,
+          '#author' => $result->author_sort,
+          '#publishDate' => implode(', ', $result->publishDate),
+          '#publisher' => implode(', ', $result->publisher),
+          '#topic' => implode(', ', $result->topic)
+        );
+
+        $result_items[] = render($result_item);
+      }
+    }
+
+    $markup['search_results'] = array(
+      '#theme' => 'item_list',
+      '#items' => $result_items,
+      '#cache' => array (
+        'max-age' => 0,
+      ),
+      '#empty' => t('No search results found!')
+    );
+
+    return $markup;
+  }
+
+  /**
+   * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
+   * @param array $configuration
+   * @param string $plugin_id
+   * @param mixed $plugin_definition
+   *
+   * @return array
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition,
+      $container->get('custom_solr_search.search'),
+      $container->get('custom_solr_search.solr_servers')
+    );
+  }
+
+}
diff --git a/templates/custom-solr-search-result-item.html.twig b/templates/custom-solr-search-result-item.html.twig
new file mode 100644
index 0000000..c90ca0c
--- /dev/null
+++ b/templates/custom-solr-search-result-item.html.twig
@@ -0,0 +1,7 @@
+<div class="row">
+    <div class="title"> <a href="{{ url }}">{{ title }}</a> </div>
+    <div class="author"> {{ author }} </div>
+    <div class="publishDate"> {{ publishDate }} </div>
+    <div class="publisher"> {{ publisher }} </div>
+    <div class="topic"> {{ topic }} </div>
+</div>
\ No newline at end of file
diff --git a/templates/custom-solr-search-result.html.twig b/templates/custom-solr-search-result.html.twig
deleted file mode 100644
index c90ca0c..0000000
--- a/templates/custom-solr-search-result.html.twig
+++ /dev/null
@@ -1,7 +0,0 @@
-<div class="row">
-    <div class="title"> <a href="{{ url }}">{{ title }}</a> </div>
-    <div class="author"> {{ author }} </div>
-    <div class="publishDate"> {{ publishDate }} </div>
-    <div class="publisher"> {{ publisher }} </div>
-    <div class="topic"> {{ topic }} </div>
-</div>
\ No newline at end of file
