diff --git a/src/Entity/ShareMessage.php b/src/Entity/ShareMessage.php
index 3de0183..bd5f6c5 100644
--- a/src/Entity/ShareMessage.php
+++ b/src/Entity/ShareMessage.php
@@ -10,6 +10,7 @@ use Drupal\Component\Plugin\FallbackPluginManagerInterface;
 use Drupal\Component\Render\PlainTextOutput;
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Url;
+use Drupal\sharemessage\ShareMessageInterface;
 
 /**
  * Entity class for the Share Message entity.
@@ -52,7 +53,7 @@ use Drupal\Core\Url;
  *   }
  * )
  */
-class ShareMessage extends ConfigEntityBase {
+class ShareMessage extends ConfigEntityBase implements ShareMessageInterface {
 
   /**
    * The machine name of this Share Message.
@@ -157,21 +158,6 @@ class ShareMessage extends ConfigEntityBase {
   /**
    * {@inheritdoc}
    */
-  public function getStatus() {
-    return $this->get('label');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function setStatus($label) {
-    $this->set('label', $label);
-    return $this;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function getPlugin() {
     return \Drupal::service('plugin.manager.sharemessage.share')->createInstance($this->plugin, ['sharemessage' => $this]);
   }
@@ -208,13 +194,7 @@ class ShareMessage extends ConfigEntityBase {
   }
 
   /**
-   * Gets the default settings.
-   *
-   * @param string $key
-   *    Settings key.
-   *
-   * @return mixed
-   *    Returns default settings.
+   * {@inheritdoc}
    */
   public function getSetting($key) {
     if (!empty($this->settings[$key])) {
@@ -223,14 +203,7 @@ class ShareMessage extends ConfigEntityBase {
   }
 
   /**
-   * Returns a context for tokenizing.
-   *
-   * @return array
-   *   An array containing the following elements:
-   *     - sharemessage: This entity.
-   *     - node: The node target for the current request, if any.
-   *   The array is altered by modules implementing
-   *   hook_sharemessage_token_context().
+   * {@inheritdoc}
    */
   public function getContext() {
     $context = array('sharemessage' => $this);
@@ -246,7 +219,7 @@ class ShareMessage extends ConfigEntityBase {
   }
 
   /**
-   * Returns Open Graph meta tags for <head>.
+   * {@inheritdoc}
    */
   public function buildOGTags($context) {
     $tags = array();
@@ -358,17 +331,7 @@ class ShareMessage extends ConfigEntityBase {
   }
 
   /**
-   * Tokenizes a field, if it is set.
-   *
-   * @param string $property_value
-   *   A field value.
-   * @param array $context
-   *   A context array for Token::replace().
-   * @param string $default
-   *   (optional) Default value if field value is not set.
-   *
-   * @return string
-   *   If existent, the field value with tokens replace, the default otherwise.
+   * {@inheritdoc}
    */
   public function getTokenizedField($property_value, $context, $default = '') {
     if ($property_value) {
@@ -378,13 +341,7 @@ class ShareMessage extends ConfigEntityBase {
   }
 
   /**
-   * Getter for the share URL.
-   *
-   * @param array $context
-   *   The context for the token replacements.
-   *
-   * @return string
-   *   The URL for this share message.
+   * {@inheritdoc}
    */
   public function getUrl($context) {
     $options = array('absolute' => TRUE);
diff --git a/src/ShareMessageInterface.php b/src/ShareMessageInterface.php
index e69de29..f0d9730 100644
--- a/src/ShareMessageInterface.php
+++ b/src/ShareMessageInterface.php
@@ -0,0 +1,134 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\sharemessage\ShareMessageInterface.
+ */
+
+namespace Drupal\sharemessage;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * Define interface for ShareMessage entity.
+ */
+interface ShareMessageInterface extends ConfigEntityInterface {
+
+  /**
+   * Sets the internal Share Message label.
+   *
+   * @param string $label
+   *    A human-readable label representing the internal Share Message label.
+   *
+   * @return $this
+   */
+  public function setLabel($label);
+
+  /**
+   * Sets the Share Message title used when sharing.
+   *
+   * @param string $title
+   *    The title of the Share Message to be set.
+   *
+   * @return $this
+   */
+  public function setTitle($title);
+
+  /**
+   * Returns the plugin instance.
+   *
+   * @return \Drupal\sharemessage\SharePluginInterface
+   *    The plugin instance for this Share Message.
+   */
+  public function getPlugin();
+
+  /**
+   * Returns the Share Message plugin ID.
+   *
+   * @return string
+   *   The Share Message plugin ID used by this Share Message.
+   */
+  public function getPluginId();
+
+  /**
+   * Sets the plugin ID.
+   *
+   * @param string $plugin_id
+   *    The Share Message plugin ID to be set.
+   *
+   * @return $this
+   */
+  public function setPluginID($plugin_id);
+
+  /**
+   * Checks whether the Share Message plugin of this Share Message exists.
+   *
+   * @return bool
+   *   TRUE if the Share Message plugin exists, FALSE otherwise.
+   */
+  public function hasPlugin();
+
+  /**
+   * Gets the definition of the plugin implementation.
+   *
+   * @return array
+   *   The plugin definition, as returned by the discovery object used by the
+   *   plugin manager.
+   */
+  public function getPluginDefinition();
+
+  /**
+   * Gets the default settings.
+   *
+   * @param string $key
+   *    The settings key.
+   *
+   * @return mixed
+   *    The default settings.
+   */
+  public function getSetting($key);
+
+  /**
+   * Gets a context for tokenizing.
+   *
+   * @return array
+   *   An array containing the following elements:
+   *     - sharemessage: This entity.
+   *     - node: The node target for the current request, if any.
+   *   The array is altered by modules implementing
+   *   hook_sharemessage_token_context().
+   */
+  public function getContext();
+
+  /**
+   * Returns Open Graph meta tags for <head>.
+   */
+  public function buildOGTags($context);
+
+  /**
+   * Tokenizes a field, if it is set.
+   *
+   * @param string $property_value
+   *   A field value.
+   * @param array $context
+   *   A context array for Token::replace().
+   * @param string $default
+   *   (optional) Default value if field value is not set.
+   *
+   * @return string
+   *   If existent, the field value with tokens replace, the default otherwise.
+   */
+  public function getTokenizedField($property_value, $context, $default = '');
+
+  /**
+   * Gets the Share Message URL.
+   *
+   * @param array $context
+   *   The context for the token replacements.
+   *
+   * @return string
+   *   The URL for this share message.
+   */
+  public function getUrl($context);
+
+}
