diff --git a/core/modules/aggregator/aggregator.install b/core/modules/aggregator/aggregator.install
index 0f52e71..471b744 100644
--- a/core/modules/aggregator/aggregator.install
+++ b/core/modules/aggregator/aggregator.install
@@ -193,13 +193,6 @@ function aggregator_schema() {
         'default' => 0,
         'description' => 'When the feed was last modified, as a Unix timestamp.',
       ),
-      'block' => array(
-        'type' => 'int',
-        'not null' => TRUE,
-        'default' => 0,
-        'size' => 'tiny',
-        'description' => "Number of items to display in the feed's block.",
-      )
     ),
     'primary key' => array('fid'),
     'indexes' => array(
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php b/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php
index 12a156b..fa1c186 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php
@@ -44,12 +44,6 @@ public function form(array $form, array &$form_state, EntityInterface $feed) {
       '#options' => $period,
       '#description' => t('The length of time between feed updates. Requires a correctly configured <a href="@cron">cron maintenance task</a>.', array('@cron' => url('admin/reports/status'))),
     );
-    $form['block'] = array('#type' => 'select',
-      '#title' => t('News items in block'),
-      '#default_value' => $feed->block->value,
-      '#options' => drupal_map_assoc(array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)),
-      '#description' => t("Drupal can make a block with the most recent news items of this feed. You can <a href=\"@block-admin\">configure blocks</a> to be displayed in the sidebar of your page. This setting lets you configure the number of news items to show in this feed's block. If you choose '0' this feed's block will be disabled.", array('@block-admin' => url('admin/structure/block'))),
-    );
 
     // Handling of categories.
     $options = array();
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php
index c53558e..43e74cd 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php
@@ -122,13 +122,6 @@ class Feed extends EntityNG implements ContentEntityInterface {
   public $modified;
 
   /**
-   * Number of items to display in the feed’s block.
-   *
-   * @var \Drupal\Core\Entity\Field\FieldInterface
-   */
-  public $block;
-
-  /**
    * Overrides Drupal\Core\Entity\EntityNG::init().
    */
   public function init() {
@@ -147,7 +140,6 @@ public function init() {
     unset($this->hash);
     unset($this->etag);
     unset($this->modified);
-    unset($this->block);
 
   }
 
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Derivative/AggregatorFeedBlock.php b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Derivative/AggregatorFeedBlock.php
deleted file mode 100644
index 88da386..0000000
--- a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Derivative/AggregatorFeedBlock.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\aggregator\Plugin\Derivative\AggregatorFeedBlock.
- */
-
-namespace Drupal\aggregator\Plugin\Derivative;
-
-use Drupal\Component\Plugin\Derivative\DerivativeInterface;
-
-/**
- * Provides block plugin definitions for aggregator feeds.
- *
- * @see \Drupal\aggregator\Plugin\block\block\AggregatorFeedBlock
- */
-class AggregatorFeedBlock implements DerivativeInterface {
-
-  /**
-   * List of derivative definitions.
-   *
-   * @var array
-   */
-  protected $derivatives = array();
-
-  /**
-   * Implements \Drupal\Component\Plugin\Derivative\DerivativeInterface::getDerivativeDefinition().
-   */
-  public function getDerivativeDefinition($derivative_id, array $base_plugin_definition) {
-    if (!empty($this->derivatives) && !empty($this->derivatives[$derivative_id])) {
-      return $this->derivatives[$derivative_id];
-    }
-    $result = db_query('SELECT fid, title, block FROM {aggregator_feed} WHERE block <> 0 AND fid = :fid', array(':fid' => $derivative_id))->fetchObject();
-    $this->derivatives[$derivative_id] = $base_plugin_definition;
-    $this->derivatives[$derivative_id]['delta'] = $result->fid;
-    $this->derivatives[$derivative_id]['subject'] = t('@title feed latest items', array('@title' => $result->title));
-    return $this->derivatives[$derivative_id];
-  }
-
-  /**
-   * Implements \Drupal\Component\Plugin\Derivative\DerivativeInterface::getDerivativeDefinitions().
-   */
-  public function getDerivativeDefinitions(array $base_plugin_definition) {
-    // Add a block plugin definition for each feed.
-    $result = db_query('SELECT fid, title FROM {aggregator_feed} WHERE block <> 0 ORDER BY fid');
-    foreach ($result as $feed) {
-      $this->derivatives[$feed->fid] = $base_plugin_definition;
-      $this->derivatives[$feed->fid]['delta'] = $feed->fid;
-      $this->derivatives[$feed->fid]['subject'] = t('@title feed latest items', array('@title' => $feed->title));
-    }
-    return $this->derivatives;
-  }
-
-}
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/block/block/AggregatorFeedBlock.php b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/block/block/AggregatorFeedBlock.php
index e5d125d..ff4f83a 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/block/block/AggregatorFeedBlock.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/block/block/AggregatorFeedBlock.php
@@ -17,8 +17,7 @@
  * @Plugin(
  *   id = "aggregator_feed_block",
  *   subject = @Translation("Aggregator feed"),
- *   module = "aggregator",
- *   derivative = "Drupal\aggregator\Plugin\Derivative\AggregatorFeedBlock"
+ *   module = "aggregator"
  * )
  */
 class AggregatorFeedBlock extends BlockBase {
@@ -30,6 +29,7 @@ public function settings() {
     // By default, the block will contain 10 feed items.
     return array(
       'block_count' => 10,
+      'feed' => NULL,
     );
   }
 
@@ -45,6 +45,17 @@ public function blockAccess() {
    * Overrides \Drupal\block\BlockBase::blockForm().
    */
   public function blockForm($form, &$form_state) {
+    $feeds = entity_load_multiple('aggregator_feed');
+    $options = array();
+    foreach ($feeds as $feed) {
+      $options[$feed->id()] = $feed->label();
+    }
+    $form['feed'] = array(
+      '#type' => 'select',
+      '#title' => t('Select the feed that should be displayed'),
+      '#default_value' => $this->configuration['feed'],
+      '#options' => $options,
+    );
     $form['block_count'] = array(
       '#type' => 'select',
       '#title' => t('Number of news items in block'),
@@ -59,27 +70,26 @@ public function blockForm($form, &$form_state) {
    */
   public function blockSubmit($form, &$form_state) {
     $this->configuration['block_count'] = $form_state['values']['block_count'];
+    $this->configuration['feed'] = $form_state['values']['feed'];
+
   }
 
   /**
    * Implements \Drupal\block\BlockBase::build().
    */
   public function build() {
-    // Plugin IDs look something like this: aggregator_feed_block:1.
-    list(, $id) = explode(':', $this->getPluginId());
-    if ($feed = db_query('SELECT fid, title, block FROM {aggregator_feed} WHERE block <> 0 AND fid = :fid', array(':fid' => $id))->fetchObject()) {
-      $result = db_query_range("SELECT * FROM {aggregator_item} WHERE fid = :fid ORDER BY timestamp DESC, iid DESC", 0, $this->configuration['block_count'], array(':fid' => $id));
-      $read_more = theme('more_link', array('url' => 'aggregator/sources/' . $feed->fid, 'title' => t("View this feed's recent news.")));
-
-      $items = array();
-      foreach ($result as $item) {
-        $items[] = theme('aggregator_block_item', array('item' => $item));
-      }
-      // Only display the block if there are items to show.
-      if (count($items) > 0) {
-        return array(
-          '#children' => theme('item_list', array('items' => $items)) . $read_more,
+    $feed = aggregator_feed_load($this->configuration['feed']);
+    if ($feed) {
+      module_load_include('inc', 'aggregator', 'aggregator.pages');
+      $items = aggregator_load_feed_items('source', $feed, $this->configuration['block_count']);
+      if ($items) {
+        $build['items'] = entity_view_multiple($items, 'default');
+        $build['read_more'] = array(
+          '#theme' => 'more_link',
+          '#url' => 'aggregator/sources/' . $feed->id(),
+          '#title' => t("View this feed's recent news."),
         );
+        return $build;
       }
     }
   }
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorRenderingTest.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorRenderingTest.php
index 464c4f2..5d19776 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorRenderingTest.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorRenderingTest.php
@@ -68,6 +68,7 @@ public function testBlockLinks() {
 
     // Set the number of news items to 0 to test that the block does not show
     // up.
+    // @todo: Fix.
     $feed->block = 0;
     $feed->save();
     // Check that the block is no longer displayed.
