diff --git a/modules/varnish_image_purge/src/Form/VarnishImagePurgeConfiguration.php b/modules/varnish_image_purge/src/Form/VarnishImagePurgeConfiguration.php
index 7718df2..9282154 100644
--- a/modules/varnish_image_purge/src/Form/VarnishImagePurgeConfiguration.php
+++ b/modules/varnish_image_purge/src/Form/VarnishImagePurgeConfiguration.php
@@ -1,19 +1,14 @@
 <?php
 
-/**
- * @file
- */
-
 namespace Drupal\varnish_image_purge\Form;
 
-/**
- * @file
- * Contains \Drupal\varnish_image_purge\Form\VarnishImagePurgeConfiguration.
- */
-
+use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\Entity\ContentEntityType;
+use Drupal\Core\Entity\EntityTypeBundleInfo;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Form\ConfigFormBase;
-
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Configure site information settings for this site.
@@ -21,28 +16,62 @@ use Drupal\Core\Form\ConfigFormBase;
 class VarnishImagePurgeConfiguration extends ConfigFormBase {
 
   /**
-   * {@inheritdoc}
+   * Drupal\Core\Entity\EntityTypeManagerInterface definition.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
    */
-  public function getFormId() {
-    return 'varnish_image_purge_configuration_form';
+  private $entityTypeManager;
+
+  /**
+   * Drupal\Core\Entity\EntityTypeBundleInfo definition.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeBundleInfo
+   */
+  private $entityTypeBundleInfo;
+
+  /**
+   * VarnishImagePurgeConfiguration constructor.
+   *
+   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
+   *   The config factory.
+   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
+   *   The entity type manager.
+   * @param \Drupal\Core\Entity\EntityTypeBundleInfo $entityTypeBundleInfo
+   *   The entity type bundle info.
+   */
+  public function __construct(
+    ConfigFactoryInterface $config_factory,
+    EntityTypeManagerInterface $entityTypeManager,
+    EntityTypeBundleInfo $entityTypeBundleInfo
+  ) {
+    parent::__construct($config_factory);
+    $this->entityTypeManager = $entityTypeManager;
+    $this->entityTypeBundleInfo = $entityTypeBundleInfo;
   }
 
   /**
    * {@inheritdoc}
    */
-  protected function getEditableConfigNames() {
-    return ['varnish_image_purge.configuration'];
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('config.factory'),
+      $container->get('entity_type.manager'),
+      $container->get('entity_type.bundle.info')
+    );
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'varnish_image_purge_configuration_form';
+  }
 
   /**
-   *
+   * {@inheritdoc}
    */
-  public function loadNodeTypes() {
-    $types = \Drupal::entityTypeManager()
-      ->getStorage('node_type')
-      ->loadMultiple();
-    return $types;
+  protected function getEditableConfigNames() {
+    return ['varnish_image_purge.configuration'];
   }
 
   /**
@@ -50,30 +79,34 @@ class VarnishImagePurgeConfiguration extends ConfigFormBase {
    */
   public function buildForm(array $form, FormStateInterface $form_state) {
     $config = $this->config('varnish_image_purge.configuration');
-    $types = $this->loadNodeTypes();
 
-    if (empty($types)) {
-      drupal_set_message($this->t('No content types were found'));
-      return NULL;
+    $content_entity_types = [];
+    $entity_type_definitions = $this->entityTypeManager->getDefinitions();
+    /* @var $definition \Drupal\Core\Entity\EntityTypeInterface */
+    foreach ($entity_type_definitions as $definition) {
+      if ($definition instanceof ContentEntityType) {
+        $content_entity_types[] = $definition;
+      }
     }
 
-    $options = [];
-    foreach ($types as $type) {
-      $label = $type->label();
-      $name = $type->id();
-      $options["$name"] = $label;
+    if (empty($content_entity_types)) {
+      drupal_set_message($this->t('No content entities were found'));
+      return NULL;
     }
 
-    $form['intro'] = [
-      '#markup' => t('Configure which enity types that Varnish image purge should be used for, if none selected, all enitiy types will be used.'),
-    ];
-
-    $form['entity_types'] = [
-      '#type' => 'select',
-      '#multiple' => TRUE,
-      '#options' => $options,
-      '#default_value' => $config->get('entity_types'),
-    ];
+    foreach ($content_entity_types as $content_entity_type) {
+
+      $form['intro'] = [
+        '#markup' => t('Configure bundles of entity types that Varnish image purge should be used for, if none selected, all bundles form all entity types will be used. Just the fields of type image will be purge.'),
+      ];
+      $form['entity_types'][$content_entity_type->id()] = [
+        '#type' => 'checkboxes',
+        '#title' => $content_entity_type->getLabel(),
+        '#multiple' => TRUE,
+        '#options' => $this->getOptionsFromEntity($content_entity_type),
+        '#default_value' => $config->get('entity_types')[$content_entity_type->id()],
+      ];
+    }
 
     return parent::buildForm($form, $form_state);
   }
@@ -91,10 +124,38 @@ class VarnishImagePurgeConfiguration extends ConfigFormBase {
    */
   public function submitForm(array &$form, FormStateInterface $form_state) {
     $config = $this->config('varnish_image_purge.configuration');
-    $config->set('entity_types', $form_state->getValue('entity_types'));
+    $values = [];
+    foreach ($form_state->getValues() as $entity_type => $bundles) {
+      if (is_array($bundles)) {
+        foreach ($bundles as $bundle_id => $bundle) {
+          if ($bundle !== 0) {
+            $values[$entity_type][] = $bundle_id;
+          }
+        }
+      }
+    }
+    $config->set('entity_types', $values);
     $config->save();
 
-    return parent::submitForm($form, $form_state);
+    parent::submitForm($form, $form_state);
+  }
+
+  /**
+   * Get the bundles form an entity and format as options.
+   *
+   * @param \Drupal\Core\Entity\ContentEntityType $content_entity_type
+   *   The entity to get the bundles from.
+   *
+   * @return array
+   *   Fortmatted options.
+   */
+  private function getOptionsFromEntity(ContentEntityType $content_entity_type) {
+    $bundles = $this->entityTypeBundleInfo->getBundleInfo($content_entity_type->id());
+    $options = [];
+    foreach ($bundles as $key => $bundle) {
+      $options[$key] = $bundle['label'];
+    }
+    return $options;
   }
 
 }
diff --git a/modules/varnish_image_purge/varnish_image_purge.module b/modules/varnish_image_purge/varnish_image_purge.module
index fe85475..42e3db7 100644
--- a/modules/varnish_image_purge/varnish_image_purge.module
+++ b/modules/varnish_image_purge/varnish_image_purge.module
@@ -50,43 +50,39 @@ function varnish_image_purge_help($route_name, RouteMatchInterface $route_match)
  */
 function varnish_image_purge_entity_update(EntityInterface $entity) {
 
-  $purge = FALSE;
   $bundle = $entity->bundle();
-  $type = $entity->getEntityTypeId();
-  $entitymanager = \Drupal::service('entity_field.manager');
+  $entity_type = $entity->getEntityTypeId();
+  $entity_field_manager = \Drupal::service('entity_field.manager');
 
   $entity_types_to_purge = \Drupal::config('varnish_image_purge.configuration')
     ->get('entity_types');
 
-  // Get the name(s) of the varnish purge configs, they get random suffix.
-  // This is ugly, should be done better I guess.
-  $query = \Drupal::database()->select('config', 'c');
-  $query->fields('c', ['name']);
-  $query->condition('c.name', $query->escapeLike('varnish_purger.settings') . '%', 'LIKE');
-  $varnish_purgers = $query->execute()->fetchAllKeyed(0, 0);
+  if (empty($entity_types_to_purge) || (isset($entity_types_to_purge[$entity_type]) && in_array($bundle, $entity_types_to_purge[$entity_type]))) {
+    // Get the name(s) of the varnish purge configs, they get random suffix.
+    // This is ugly, should be done better I guess.
+    $query = \Drupal::database()->select('config', 'c');
+    $query->fields('c', ['name']);
+    $query->condition('c.name', $query->escapeLike('varnish_purger.settings') . '%', 'LIKE');
+    $varnish_purgers = $query->execute()->fetchAllKeyed(0, 0);
 
-  // Set the array to use for varnish purgers.
-  $purgers = [];
+    // Set the array to use for varnish purgers.
+    $purgers = [];
 
-  if (isset($varnish_purgers)) {
+    if (isset($varnish_purgers)) {
 
-    foreach ($varnish_purgers as $key => $value) {
-      $config_purge = \Drupal::config($key);
-      $purgers[$key]['hostname'] = $config_purge->get('hostname');
-      $purgers[$key]['port'] = $config_purge->get('port');
-    }
-    if (isset($entity_types_to_purge[$bundle]) || empty($entity_types_to_purge)) {
-      $purge = TRUE;
-    }
+      foreach ($varnish_purgers as $key => $value) {
+        $config_purge = \Drupal::config($key);
+        $purgers[$key]['hostname'] = $config_purge->get('hostname');
+        $purgers[$key]['port'] = $config_purge->get('port');
+      }
 
-    if ($purge === TRUE) {
       $class = \Drupal::entityTypeManager()
-        ->getDefinition($type)
+        ->getDefinition($entity_type)
         ->getOriginalClass();
       $interface = 'Drupal\Core\Entity\FieldableEntityInterface';
 
       if (in_array($interface, class_implements($class))) {
-        $field_definitions = $entitymanager->getFieldDefinitions($type, $bundle);
+        $field_definitions = $entity_field_manager->getFieldDefinitions($entity_type, $bundle);
         if (isset($field_definitions)) {
           $field_images = [];
           foreach ($field_definitions as $field_definition) {
