diff --git a/imagefield_slideshow.info.yml b/imagefield_slideshow.info.yml
index 41fa5b3..dcc6067 100644
--- a/imagefield_slideshow.info.yml
+++ b/imagefield_slideshow.info.yml
@@ -3,3 +3,5 @@ type: module
 description: 'Creates a field formatter for image field, for which that particular field will be rendered as a basic slider.'
 core: 8.x
 package: Field
+dependencies:
+  - image
\ No newline at end of file
diff --git a/src/Plugin/Field/FieldFormatter/ImagefieldSlideshowFieldFormatter.php b/src/Plugin/Field/FieldFormatter/ImagefieldSlideshowFieldFormatter.php
new file mode 100644
index 0000000..12dcee5
--- /dev/null
+++ b/src/Plugin/Field/FieldFormatter/ImagefieldSlideshowFieldFormatter.php
@@ -0,0 +1,144 @@
+<?php
+
+namespace Drupal\imagefield_slideshow\Plugin\Field\FieldFormatter;
+
+use Drupal\Component\Utility\Html;
+use Drupal\Core\Cache\Cache;
+use Drupal\Core\Field\FieldItemInterface;
+use Drupal\Core\Field\FieldItemListInterface;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Url;
+use Drupal\image\Plugin\Field\FieldFormatter\ImageFormatterBase;
+
+/**
+ * Plugin implementation of the 'imagefield_slideshow_field_formatter' formatter.
+ *
+ * @FieldFormatter(
+ *   id = "imagefield_slideshow_field_formatter",
+ *   label = @Translation("Imagefield slideshow field formatter"),
+ *   field_types = {
+ *     "image"
+ *   }
+ * )
+ */
+class ImagefieldSlideshowFieldFormatter extends ImageFormatterBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function defaultSettings() {
+    return array(
+      // Implement default settings.
+    ) + parent::defaultSettings();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function settingsForm(array $form, FormStateInterface $form_state) {
+    return array(
+      // Implement settings form.
+    ) + parent::settingsForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function settingsSummary() {
+    $summary = [];
+    // Implement settings summary.
+
+    return $summary;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function viewElements(FieldItemListInterface $items, $langcode) {
+    $elements = array();
+    $files = $this->getEntitiesToView($items, $langcode);
+
+    // Early opt-out if the field is empty.
+    if (empty($files)) {
+      return $elements;
+    }
+
+    $url = NULL;
+    $image_link_setting = $this->getSetting('image_link');
+    // Check if the formatter involves a link.
+    if ($image_link_setting == 'content') {
+      $entity = $items->getEntity();
+      if (!$entity->isNew()) {
+        $url = $entity->urlInfo();
+      }
+    }
+    elseif ($image_link_setting == 'file') {
+      $link_file = TRUE;
+    }
+
+    $image_style_setting = $this->getSetting('image_style');
+
+    // Collect cache tags to be added for each item in the field.
+    $cache_tags = array();
+    if (!empty($image_style_setting)) {
+      // $image_style = $this->imageStyleStorage->load($image_style_setting);
+      // $cache_tags = $image_style->getCacheTags();
+    }
+
+    foreach ($files as $delta => $file) {
+      $cache_contexts = array();
+      if (isset($link_file)) {
+        $image_uri = $file->getFileUri();
+        // @todo Wrap in file_url_transform_relative(). This is currently
+        // impossible. As a work-around, we currently add the 'url.site' cache
+        // context to ensure different file URLs are generated for different
+        // sites in a multisite setup, including HTTP and HTTPS versions of the
+        // same site. Fix in https://www.drupal.org/node/2646744.
+        $url = Url::fromUri(file_create_url($image_uri));
+        $cache_contexts[] = 'url.site';
+      }
+      $cache_tags = Cache::mergeTags($cache_tags, $file->getCacheTags());
+
+      // Extract field item attributes for the theme function, and unset them
+      // from the $item so that the field template does not re-render them.
+      $item = $file->_referringItem;
+      $item_attributes = $item->_attributes;
+      unset($item->_attributes);
+
+      $elements[$delta] = array(
+        '#theme' => 'image_formatter',
+        '#item' => $item,
+        '#item_attributes' => $item_attributes,
+        // '#image_style' => $image_style_setting,
+        '#url' => $url,
+        '#cache' => array(
+          'tags' => $cache_tags,
+          'contexts' => $cache_contexts,
+        ),
+      );
+    }
+
+    /*foreach ($items as $delta => $item) {
+      $elements[$delta] = ['#markup' => $this->viewValue($item)];
+    }*/
+
+    return $elements;
+  }
+
+  /**
+   * Generate the output appropriate for one field item.
+   *
+   * @param \Drupal\Core\Field\FieldItemInterface $item
+   *   One field item.
+   *
+   * @return string
+   *   The textual output generated.
+   */
+  protected function viewValue(FieldItemInterface $item) {
+    // The text value has no text format assigned to it, so the user input
+    // should equal the output, including newlines.
+    // $item->value = 'kkkkkkkkk';
+    return nl2br(Html::escape($item->value));
+  }
+
+}
