diff --git a/src/WPDesk/Notice/Notice.php b/src/WPDesk/Notice/Notice.php
index 57c774d22203c5e10fc8e831fdaded1d0e6298fd..d3ea070240edc36155885d45e8ee166bd3d700ed 100644
--- a/src/WPDesk/Notice/Notice.php
+++ b/src/WPDesk/Notice/Notice.php
@@ -64,13 +64,20 @@ class Notice
      * @param string $noticeType Notice type.
      * @param bool $dismissible Is dismissible.
      * @param int $priority Notice priority.
-     */
-    public function __construct($noticeContent, $noticeType = 'info', $dismissible = false, $priority = 10)
-    {
+     * @param array $attributes Attributes.
+     */
+    public function __construct(
+        $noticeContent,
+        $noticeType = 'info',
+        $dismissible = false,
+        $priority = 10,
+        $attributes = array()
+    ) {
         $this->noticeContent = $noticeContent;
         $this->noticeType    = $noticeType;
         $this->dismissible   = $dismissible;
         $this->priority      = $priority;
+        $this->attributes    = $attributes;
         $this->addAction();
     }
 
@@ -176,6 +183,9 @@ class Notice
         if ($this->dismissible) {
             $notice_class .= ' is-dismissible';
         }
+        if (isset($this->attributes['class'])) {
+            $notice_class .= ' ' . $this->attributes['class'];
+        }
         return $notice_class;
     }
 
@@ -187,15 +197,35 @@ class Notice
     protected function getAttributesAsString()
     {
         $attribute_string = sprintf('class="%1$s"', esc_attr($this->getNoticeClass()));
+        foreach ($this->attributes as $attribute_name => $attribute_value) {
+            if ('class' !== $attribute_name) {
+                $attribute_string .= sprintf(' %1$s="%2$s"', esc_html($attribute_name), esc_attr($attribute_value));
+            }
+        }
         return $attribute_string;
     }
 
+    private function addParagraphToContent()
+    {
+        if (0 === strpos($this->noticeContent, '<p>')) {
+            return false;
+        }
+        if (0 === strpos($this->noticeContent, '<div>') || 0 === strpos($this->noticeContent, '<div ')) {
+            return false;
+        }
+        return true;
+    }
+
     /**
      * Show notice;
      */
     public function showNotice()
     {
-        echo sprintf('<div %1$s><p>%2$s</p></div>', $this->getAttributesAsString(), $this->noticeContent);
+        $noticeFormat = '<div %1$s>%2$s</div>';
+        if ($this->addParagraphToContent()) {
+            $noticeFormat = '<div %1$s><p>%2$s</p></div>';
+        }
+        echo sprintf($noticeFormat, $this->getAttributesAsString(), $this->noticeContent);
     }
 
 }
diff --git a/src/WPDesk/Notice/PermanentDismissibleNotice.php b/src/WPDesk/Notice/PermanentDismissibleNotice.php
index ea31b5aabbf4cf8f99bb6154a69fd9cee7094a7c..00d0336ec88ea86433ddb17ae164d811b2a6f09b 100644
--- a/src/WPDesk/Notice/PermanentDismissibleNotice.php
+++ b/src/WPDesk/Notice/PermanentDismissibleNotice.php
@@ -31,11 +31,11 @@ class PermanentDismissibleNotice extends Notice
      * @param string $noticeType Notice type.
      * @param string $noticeName Notice dismiss option name.
      * @param int    $priority Priority
+     * @param array $attributes Attributes.
      */
-
-    public function __construct($noticeContent, $noticeType, $noticeName, $priority = 10)
+    public function __construct($noticeContent, $noticeType, $noticeName, $priority = 10, $attributes = array())
     {
-        parent::__construct($noticeContent, $noticeType, true, $priority);
+        parent::__construct($noticeContent, $noticeType, true, $priority, $attributes);
         $this->noticeName = $noticeName;
         $this->noticeDismissOptionName = static::OPTION_NAME_PREFIX . $noticeName;
         if (self::OPTION_VALUE_DISMISSED === get_option($this->noticeDismissOptionName, '')) {