diff --git a/src/Plugin/Validation/Constraint/GeoConstraint.php b/src/Plugin/Validation/Constraint/GeoConstraint.php
index 16849fc..af321dd 100644
--- a/src/Plugin/Validation/Constraint/GeoConstraint.php
+++ b/src/Plugin/Validation/Constraint/GeoConstraint.php
@@ -1,15 +1,8 @@
 <?php
 
-/**
- * @file
- * Contains \Drupal\geofield\Plugin\Validation\Constraint\GeoConstraint.
- */
-
 namespace Drupal\geofield\Plugin\Validation\Constraint;
 
 use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidatorInterface;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
 
 /**
  * Validation constraint for geospatial values.
@@ -19,48 +12,7 @@
  *   label = @Translation("Geo data valid for geofield type.", context = "Validation"),
  * )
  */
-class GeoConstraint extends Constraint implements ConstraintValidatorInterface {
+class GeoConstraint extends Constraint {
 
   public $message = '"@value" is not a valid geospatial content.';
-
-  /**
-   * @var \Symfony\Component\Validator\Context\ExecutionContextInterface
-   */
-  protected $context;
-
-  /**
-   * {@inheritDoc}
-   */
-  public function initialize(ExecutionContextInterface $context) {
-    $this->context = $context;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function validatedBy() {
-    return get_class($this);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function validate($value, Constraint $constraint) {
-    if (isset($value)) {
-      $valid_geometry = TRUE;
-
-      try {
-        if (!\Drupal::service('geofield.geophp')->load($value, 'wkt')) {
-          $valid_geometry = FALSE;
-        }
-      }
-      catch (\Exception $e) {
-        $valid_geometry = FALSE;
-      }
-
-      if (!$valid_geometry) {
-        $this->context->addViolation($this->message, array('@value' => $value));
-      }
-    }
-  }
 }
diff --git a/src/Plugin/Validation/Constraint/GeoConstraintValidator.php b/src/Plugin/Validation/Constraint/GeoConstraintValidator.php
new file mode 100644
index 0000000..5675db6
--- /dev/null
+++ b/src/Plugin/Validation/Constraint/GeoConstraintValidator.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Drupal\geofield\Plugin\Validation\Constraint;
+
+use Symfony\Component\Validator\Constraint;
+use Symfony\Component\Validator\ConstraintValidator;
+
+/**
+ * Validates the GeoType constraint.
+ */
+class GeoConstraintValidator extends ConstraintValidator {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validate($items, Constraint $constraint) {
+    if (isset($items)) {
+      $valid_geometry = TRUE;
+
+      try {
+        if (!\Drupal::service('geofield.geophp')->load($items, 'wkt')) {
+          $valid_geometry = FALSE;
+        }
+      }
+      catch (\Exception $e) {
+        $valid_geometry = FALSE;
+      }
+
+      if (!$valid_geometry) {
+        $this->context->addViolation($constraint->message, array('@value' => $items));
+      }
+    }
+  }
+
+}
