diff --git a/group.install b/group.install
index 49d1dd4..470626a 100644
--- a/group.install
+++ b/group.install
@@ -10,6 +10,7 @@ use Drupal\Core\Config\ExtensionInstallStorage;
 use Drupal\Core\Config\InstallStorage;
 use Drupal\Core\Entity\EntityTypeListenerInterface;
 use Drupal\Core\Entity\Sql\SqlContentEntityStorage;
+use Drupal\Core\Field\BaseFieldDefinition;
 
 /**
  * Resave all GroupContent labels and remove orphaned entities.
@@ -424,3 +425,61 @@ function group_update_8014() {
     $group_type->save(TRUE);
   }
 }
+
+
+/**
+ * alter the `group_content_field_data` table to change entity_id to VARCHAR(32)
+ */
+function group_update_8015() {
+	$database = Drupal::database();
+	$entity_type = 'group_content';
+	$table = 'group_content_field_data';
+	$field_name = 'entity_id';
+
+	$rows = NULL;
+	if ($database->schema()->tableExists($table)) {
+		// The table data to restore after the update is completed.
+		$rows = $database->select($table, 'pm')
+			->fields('pm')
+			->execute()
+			->fetchAll();
+	}
+
+	$database->truncate($table)->execute();
+
+	$entity_definition_update_manager = Drupal::entityDefinitionUpdateManager();
+
+	// Delete the storage definition if it was defined before.
+	$storage_definition = $entity_definition_update_manager->getFieldStorageDefinition($field_name, $entity_type);
+	$entity_definition_update_manager->uninstallFieldStorageDefinition($storage_definition);
+
+	// Add content_translation_changed field.
+	$new_field_storage = BaseFieldDefinition::create('entity_reference')
+		->setLabel(t('Content'))
+		->setDescription(t('The entity to add to the group.'))
+		->setSetting('target_type', 'group_type')
+		->setDisplayOptions('form', [
+			'type' => 'entity_reference_autocomplete',
+			'weight' => 5,
+			'settings' => [
+				'match_operator' => 'CONTAINS',
+				'size' => '60',
+				'placeholder' => '',
+			],
+		])
+		->setDisplayConfigurable('view', TRUE)
+		->setDisplayConfigurable('form', TRUE)
+		->setRequired(TRUE);
+
+	$entity_definition_update_manager->installFieldStorageDefinition('entity_id', $entity_type, 'group', $new_field_storage);
+
+	// Restore existing data in the same table.
+	if (!is_null($rows)) {
+		foreach ($rows as $row) {
+			$database->insert($table)
+				->fields((array) $row)
+				->execute();
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/group.module b/group.module
index 046b178..2a34aa5 100644
--- a/group.module
+++ b/group.module
@@ -194,12 +194,10 @@ function group_form_block_form_alter(&$form, FormStateInterface $form_state, $fo
  * Implements hook_entity_delete().
  */
 function group_entity_delete(EntityInterface $entity) {
-  if ($entity instanceof ContentEntityInterface) {
-    if ($group_contents = GroupContent::loadByEntity($entity)) {
-      /** @var \Drupal\group\Entity\GroupContent $group_content */
-      foreach ($group_contents as $group_content) {
-        $group_content->delete();
-      }
+  if ($group_contents = GroupContent::loadByEntity($entity)) {
+    /** @var \Drupal\group\Entity\GroupContent $group_content */
+    foreach ($group_contents as $group_content) {
+      $group_content->delete();
     }
   }
 }
diff --git a/src/Entity/Group.php b/src/Entity/Group.php
index 0bbea96..0d31ca1 100644
--- a/src/Entity/Group.php
+++ b/src/Entity/Group.php
@@ -2,12 +2,12 @@
 
 namespace Drupal\group\Entity;
 
-use Drupal\Core\Field\BaseFieldDefinition;
 use Drupal\Core\Entity\ContentEntityBase;
-use Drupal\Core\Entity\ContentEntityInterface;
-use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Entity\EntityChangedTrait;
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\Core\Entity\EntityTypeInterface;
+use Drupal\Core\Field\BaseFieldDefinition;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\user\UserInterface;
 
@@ -149,7 +149,7 @@ class Group extends ContentEntityBase implements GroupInterface {
   /**
    * {@inheritdoc}
    */
-  public function addContent(ContentEntityInterface $entity, $plugin_id, $values = []) {
+  public function addContent(EntityInterface $entity, $plugin_id, $values = []) {
     $storage = $this->groupContentStorage();
     $group_content = $storage->createForEntityInGroup($entity, $this, $plugin_id, $values);
     $storage->save($group_content);
diff --git a/src/Entity/GroupContent.php b/src/Entity/GroupContent.php
index e94d533..565fa72 100644
--- a/src/Entity/GroupContent.php
+++ b/src/Entity/GroupContent.php
@@ -3,8 +3,8 @@
 namespace Drupal\group\Entity;
 
 use Drupal\Core\Entity\ContentEntityBase;
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityChangedTrait;
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Field\BaseFieldDefinition;
@@ -114,7 +114,7 @@ class GroupContent extends ContentEntityBase implements GroupContentInterface {
   /**
    * {@inheritdoc}
    */
-  public static function loadByEntity(ContentEntityInterface $entity) {
+  public static function loadByEntity(EntityInterface $entity) {
     /** @var \Drupal\group\Entity\Storage\GroupContentStorageInterface $storage */
     $storage = \Drupal::entityTypeManager()->getStorage('group_content');
     return $storage->loadByEntity($entity);
@@ -240,9 +240,13 @@ class GroupContent extends ContentEntityBase implements GroupContentInterface {
 
     // Borrowed this logic from the Comment module.
     // Warning! May change in the future: https://www.drupal.org/node/2346347
+    // The target type is set to a config entity to force a string field
+    // for the entity ID.
+    // @see https://www.drupal.org/node/1757452.
     $fields['entity_id'] = BaseFieldDefinition::create('entity_reference')
       ->setLabel(t('Content'))
       ->setDescription(t('The entity to add to the group.'))
+      ->setSetting('target_type', 'group_type')
       ->setDisplayOptions('form', [
         'type' => 'entity_reference_autocomplete',
         'weight' => 5,
diff --git a/src/Entity/GroupContentInterface.php b/src/Entity/GroupContentInterface.php
index 28965aa..dedcf03 100644
--- a/src/Entity/GroupContentInterface.php
+++ b/src/Entity/GroupContentInterface.php
@@ -2,9 +2,10 @@
 
 namespace Drupal\group\Entity;
 
-use Drupal\user\EntityOwnerInterface;
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityChangedInterface;
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\user\EntityOwnerInterface;
 
 /**
  * Provides an interface defining a Group content entity.
@@ -55,12 +56,12 @@ interface GroupContentInterface extends ContentEntityInterface, EntityOwnerInter
   /**
    * Loads group content entities which reference a given entity.
    *
-   * @param \Drupal\Core\Entity\ContentEntityInterface $entity
+   * @param \Drupal\Core\Entity\EntityInterface $entity
    *   An entity which may be within one or more groups.
    *
    * @return \Drupal\group\Entity\GroupContentInterface[]
    *   An array of group content entities which reference the given entity.
    */
-  public static function loadByEntity(ContentEntityInterface $entity);
+  public static function loadByEntity(EntityInterface $entity);
 
 }
diff --git a/src/Entity/GroupInterface.php b/src/Entity/GroupInterface.php
index f6477fc..ef65ef8 100644
--- a/src/Entity/GroupInterface.php
+++ b/src/Entity/GroupInterface.php
@@ -2,10 +2,11 @@
 
 namespace Drupal\group\Entity;
 
-use Drupal\user\EntityOwnerInterface;
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityChangedInterface;
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Session\AccountInterface;
+use Drupal\user\EntityOwnerInterface;
 use Drupal\user\UserInterface;
 
 /**
@@ -33,7 +34,7 @@ interface GroupInterface extends ContentEntityInterface, EntityOwnerInterface, E
   /**
    * Adds a content entity as a group content entity.
    *
-   * @param \Drupal\Core\Entity\ContentEntityInterface $entity
+   * @param \Drupal\Core\Entity\EntityInterface $entity
    *   The content entity to add to the group.
    * @param string $plugin_id
    *   The ID of the content enabler plugin to add the entity with.
@@ -41,7 +42,7 @@ interface GroupInterface extends ContentEntityInterface, EntityOwnerInterface, E
    *   (optional) Extra values to add to the group content relationship. You
    *   cannot overwrite the group ID (gid) or entity ID (entity_id).
    */
-  public function addContent(ContentEntityInterface $entity, $plugin_id, $values = []);
+  public function addContent(EntityInterface $entity, $plugin_id, $values = []);
 
   /**
    * Retrieves all GroupContent entities for the group.
diff --git a/src/Entity/Storage/GroupContentStorage.php b/src/Entity/Storage/GroupContentStorage.php
index cc5ea53..34cadbd 100644
--- a/src/Entity/Storage/GroupContentStorage.php
+++ b/src/Entity/Storage/GroupContentStorage.php
@@ -2,7 +2,7 @@
 
 namespace Drupal\group\Entity\Storage;
 
-use Drupal\Core\Entity\ContentEntityInterface;
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityStorageException;
 use Drupal\Core\Entity\Sql\SqlContentEntityStorage;
 use Drupal\group\Entity\GroupInterface;
@@ -18,7 +18,7 @@ class GroupContentStorage extends SqlContentEntityStorage implements GroupConten
   /**
    * {@inheritdoc}
    */
-  public function createForEntityInGroup(ContentEntityInterface $entity, GroupInterface $group, $plugin_id, $values = []) {
+  public function createForEntityInGroup(EntityInterface $entity, GroupInterface $group, $plugin_id, $values = []) {
     // An unsaved entity cannot have any group content.
     if ($entity->id() === NULL) {
       throw new EntityStorageException("Cannot add an unsaved entity to a group.");
@@ -78,7 +78,7 @@ class GroupContentStorage extends SqlContentEntityStorage implements GroupConten
   /**
    * {@inheritdoc}
    */
-  public function loadByEntity(ContentEntityInterface $entity) {
+  public function loadByEntity(EntityInterface $entity) {
     // An unsaved entity cannot have any group content.
     if ($entity->id() === NULL) {
       throw new EntityStorageException("Cannot load GroupContent entities for an unsaved entity.");
diff --git a/src/Entity/Storage/GroupContentStorageInterface.php b/src/Entity/Storage/GroupContentStorageInterface.php
index f61001b..3f3a84b 100644
--- a/src/Entity/Storage/GroupContentStorageInterface.php
+++ b/src/Entity/Storage/GroupContentStorageInterface.php
@@ -2,8 +2,8 @@
 
 namespace Drupal\group\Entity\Storage;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\ContentEntityStorageInterface;
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\group\Entity\GroupInterface;
 
 /**
@@ -14,8 +14,8 @@ interface GroupContentStorageInterface extends ContentEntityStorageInterface {
   /**
    * Creates a GroupContent entity for placing a content entity in a group.
    *
-   * @param \Drupal\Core\Entity\ContentEntityInterface $entity
-   *   The content entity to add to the group.
+   * @param \Drupal\Core\Entity\EntityInterface $entity
+   *   The entity to add to the group.
    * @param \Drupal\group\Entity\GroupInterface $group
    *   The group to add the content entity to.
    * @param string $plugin_id
@@ -26,7 +26,7 @@ interface GroupContentStorageInterface extends ContentEntityStorageInterface {
    * @return \Drupal\group\Entity\GroupContentInterface
    *   A new GroupContent entity.
    */
-  public function createForEntityInGroup(ContentEntityInterface $entity, GroupInterface $group, $plugin_id, $values = []);
+  public function createForEntityInGroup(EntityInterface $entity, GroupInterface $group, $plugin_id, $values = []);
 
   /**
    * Retrieves all GroupContent entities for a group.
@@ -47,13 +47,13 @@ interface GroupContentStorageInterface extends ContentEntityStorageInterface {
   /**
    * Retrieves all GroupContent entities that represent a given entity.
    *
-   * @param \Drupal\Core\Entity\ContentEntityInterface $entity
+   * @param \Drupal\Core\Entity\EntityInterface $entity
    *   An entity which may be within one or more groups.
    *
    * @return \Drupal\group\Entity\GroupContentInterface[]
    *   A list of GroupContent entities which refer to the given entity.
    */
-  public function loadByEntity(ContentEntityInterface $entity);
+  public function loadByEntity(EntityInterface $entity);
 
   /**
    * Retrieves all GroupContent entities by their responsible plugin ID.
