diff --git a/src/EncryptedFieldValueManager.php b/src/EncryptedFieldValueManager.php
index 435245d..dd7d413 100644
--- a/src/EncryptedFieldValueManager.php
+++ b/src/EncryptedFieldValueManager.php
@@ -51,9 +51,6 @@ class EncryptedFieldValueManager implements EncryptedFieldValueManagerInterface
   public function createEncryptedFieldValue(ContentEntityInterface $entity, $field_name, $delta, $property, $encrypted_value) {
     $langcode = $entity->language()->getId();
     if ($encrypted_field_value = $this->getExistingEntity($entity, $field_name, $delta, $property)) {
-      // Update an existing encrypted field value, taking into account the
-      // parent entity language.
-      $encrypted_field_value = $encrypted_field_value->hasTranslation($langcode) ? $encrypted_field_value->getTranslation($langcode) : $encrypted_field_value->addTranslation($langcode);
       $encrypted_field_value->setEncryptedValue($encrypted_value);
       $encrypted_field_value->save();
     }
@@ -98,7 +95,7 @@ class EncryptedFieldValueManager implements EncryptedFieldValueManagerInterface
    * {@inheritdoc}
    */
   public function getEncryptedFieldValue(ContentEntityInterface $entity, $field_name, $delta, $property) {
-    $field_value_entity = $this->getExistingEntity($entity, $field_name, $delta, $property);
+    $field_value_entity = $this->getExistingEntity($entity, $field_name, $delta, $property, $entity->getRevisionId());
     if ($field_value_entity) {
       $langcode = $entity->language()->getId();
       if ($field_value_entity->hasTranslation($langcode)) {
@@ -117,6 +114,7 @@ class EncryptedFieldValueManager implements EncryptedFieldValueManagerInterface
       ->condition('entity_type', $entity->getEntityTypeId())
       ->condition('entity_id', $entity->id())
       ->condition('entity_revision_id', $this->getEntityRevisionId($entity))
+      ->condition('langcode', $entity->language()->getId())
       ->condition('field_name', $field_name)
       ->condition('field_delta', $delta)
       ->condition('field_property', $property);
diff --git a/src/EncryptedFieldValueManagerInterface.php b/src/EncryptedFieldValueManagerInterface.php
index 38fa885..d4d828f 100644
--- a/src/EncryptedFieldValueManagerInterface.php
+++ b/src/EncryptedFieldValueManagerInterface.php
@@ -74,6 +74,8 @@ interface EncryptedFieldValueManagerInterface {
    *
    * @return bool|\Drupal\field_encrypt\Entity\EncryptedFieldValue
    *   The existing EncryptedFieldValue entity.
+   *
+   * @fixme have its own custom method ...
    */
   public function getExistingEntity(ContentEntityInterface $entity, $field_name, $delta, $property);
 
diff --git a/src/EventSubscriber/ConfigSubscriber.php b/src/EventSubscriber/ConfigSubscriber.php
index 8685a99..115dbac 100644
--- a/src/EventSubscriber/ConfigSubscriber.php
+++ b/src/EventSubscriber/ConfigSubscriber.php
@@ -114,6 +114,8 @@ class ConfigSubscriber implements EventSubscriberInterface {
    *
    * @param ConfigCrudEvent $event
    *   The configuration event.
+   *
+   * @todo why is this not just using hook_field_storage_update?
    */
   public function onConfigSave(ConfigCrudEvent $event) {
     $config = $event->getConfig();
@@ -149,7 +151,7 @@ class ConfigSubscriber implements EventSubscriberInterface {
 
             if (!empty($entity_ids)) {
               // Call the Queue API and add items for processing.
-              /** @var QueueInterface $queue */
+              /** @var \Drupal\Core\Queue\QueueInterface $queue */
               $queue = $this->queueFactory->get('cron_encrypted_field_update');
 
               foreach (array_keys($entity_ids) as $entity_id) {
