diff --git a/.idea/php.xml b/.idea/php.xml
new file mode 100644
index 0000000..10b171f
--- /dev/null
+++ b/.idea/php.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PhpProjectSharedConfiguration" php_language_level="7.1" />
+</project>
\ No newline at end of file
diff --git a/includes/markup.inc b/includes/markup.inc
new file mode 100644
index 0000000..e75e6a9
--- /dev/null
+++ b/includes/markup.inc
@@ -0,0 +1,94 @@
+<?php
+
+/**
+ * Marks an object's __toString() method as returning markup.
+ *
+ * Objects that implement this interface will not be automatically XSS filtered
+ * by the render system or automatically escaped by the theme engine.
+ */
+interface MarkupInterface extends \JsonSerializable {
+
+  /**
+   * Returns markup.
+   *
+   * @return string
+   *   The markup.
+   */
+  public function __toString();
+
+}
+
+
+/**
+ * Defines an object that passes safe strings through the Views render system.
+ *
+ * This object should only be constructed with a known safe string. If there is
+ * any risk that the string contains user-entered data that has not been
+ * filtered first, it must not be used.
+ */
+class view_markup implements MarkupInterface, \Countable {
+
+  /**
+   * The safe string.
+   *
+   * @var string
+   */
+  protected $string;
+
+  /**
+   * Creates a Markup object if necessary.
+   *
+   * If $string is equal to a blank string then it is not necessary to create a
+   * Markup object. If $string is an object that implements MarkupInterface it
+   * is returned unchanged.
+   *
+   * @param mixed $string
+   *   The string to mark as safe. This value will be cast to a string.
+   *
+   * @return \MarkupInterface
+   *   A safe string.
+   */
+  public static function create($string) {
+    if ($string instanceof MarkupInterface) {
+      return $string;
+    }
+    $string = (string) $string;
+    if ($string === '') {
+      return '';
+    }
+    $safe_string = new static();
+    $safe_string->string = $string;
+    return $safe_string;
+  }
+
+  /**
+   * Returns the string version of the Markup object.
+   *
+   * @return string
+   *   The safe string content.
+   */
+  public function __toString() {
+    return $this->string;
+  }
+
+  /**
+   * Returns the string length.
+   *
+   * @return int
+   *   The length of the string.
+   */
+  public function count() {
+    return strlen($this->string);
+  }
+
+  /**
+   * Returns a representation of the object for use in JSON serialization.
+   *
+   * @return string
+   *   The safe string content.
+   */
+  public function jsonSerialize() {
+    return $this->__toString();
+  }
+
+}
