diff --git rawr.module rawr.module
index 6ac30aa..aee4654 100644
--- rawr.module
+++ rawr.module
@@ -5,4 +5,73 @@ function rawr_init() {
   drupal_add_js(drupal_get_path('module', 'rawr') . '/js/rawr.js');
   drupal_add_css(drupal_get_path('module', 'rawr') . '/css/jquery.gritter.css');
   drupal_add_js(array('rawrImageFolder' => drupal_get_path('module', 'rawr') . '/images/'), 'setting');
+}
+
+function rawr_theme_registry_alter(&$theme_registry) {
+  $modulepath = drupal_get_path('module', 'drupalwiki_dokument');
+  // make pattern template from our module take effect
+  // if no theme provide such.
+  $tmp = $theme_registry;
+  // Pretend we are a theme and tell it to work on it
+  // this will discover pattern hooks in our module directory
+  _theme_process_registry($tmp, 'phptemplate', 'theme_engine', 'rawr', $modulepath);
+
+  $theme_registry['status_messages']['function'] =  'rawr_status_messages';
+  // add only the newly discover hooks
+  $theme_registry += array_diff_key($tmp, $theme_registry);
+}
+
+function _rawr_insert_after_first_element(&$a, $element) {
+  $first_element = array_shift($a);
+  array_unshift($a, $first_element, $element);
+}
+
+function rawr_status_messages($display = NULL) {
+  $grouped_messages = array('inline' => array(), 'rawr' => array());
+  $rendered_messages = array('inline' => '', 'rawr' => '');
+  // that can be definetly done better, but most probably not better readable
+  $data = drupal_get_messages($display);
+  if(count($data) == 0) {
+    return '';
+  }
+  
+  foreach ($data as $type => $messages) {
+    foreach ($messages as $message) {
+      if(_rawr_is_html($message)) {
+        $grouped_messages['inline'][$type][] = $message;
+      }
+      else {
+        $grouped_messages['rawr'][$type][] = $message;
+      }
+    }
+  }
+
+  foreach ( $grouped_messages as $key => $content ) {
+    foreach ($content as $type => $messages) {
+      $rendered_messages[$key] .= "<div class=\"messages $type\">\n";
+      if (count($messages) > 1) {
+        $rendered_messages[$key] .= " <ul>\n";
+        foreach ($messages as $message) {
+          $rendered_messages[$key] .= '  <li>'. $message ."</li>\n";
+        }
+        $rendered_messages[$key] .= " </ul>\n";
+      }
+      else {
+        $rendered_messages[$key] .= $messages[0];
+      }
+      $rendered_messages[$key] .= "</div>\n";
+    }
+  }
+  
+  return "<div id='console'>{$rendered_messages['rawr']}</div>{$rendered_messages['inline']}";
+}
+
+function _rawr_is_html($text) {
+  // TODO: maybe make this more clever
+  $count = preg_match('/<\w+/m',$text);
+  if ($count > 0) { // is html
+    return TRUE;
+  }
+  // else
+  return FALSE;
 }
\ No newline at end of file
diff --git rawr.module rawr.module
index 6ac30aa..f3d4b32 100644
--- rawr.module
+++ rawr.module
@@ -5,4 +5,73 @@ function rawr_init() {
   drupal_add_js(drupal_get_path('module', 'rawr') . '/js/rawr.js');
   drupal_add_css(drupal_get_path('module', 'rawr') . '/css/jquery.gritter.css');
   drupal_add_js(array('rawrImageFolder' => drupal_get_path('module', 'rawr') . '/images/'), 'setting');
+}
+
+function rawr_theme_registry_alter(&$theme_registry) {
+  $modulepath = drupal_get_path('module', 'drupalwiki_dokument');
+  // make pattern template from our module take effect
+  // if no theme provide such.
+  $tmp = $theme_registry;
+  // Pretend we are a theme and tell it to work on it
+  // this will discover pattern hooks in our module directory
+  _theme_process_registry($tmp, 'phptemplate', 'theme_engine', 'rawr', $modulepath);
+
+  $theme_registry['status_messages']['function'] =  'rawr_status_messages';
+  // add only the newly discover hooks
+  $theme_registry += array_diff_key($tmp, $theme_registry);
+}
+
+function _rawr_insert_after_first_element(&$a, $element) {
+  $first_element = array_shift($a);
+  array_unshift($a, $first_element, $element);
+}
+
+function rawr_status_messages($display = NULL) {
+  $grouped_messages = array('inline' => array(), 'rawr' => array());
+  $rendered_messages = array('inline' => '', 'rawr' => '');
+  // that can be definetly done better, but most probably not better readable
+  $data = drupal_get_messages($display);
+  if (count($data) == 0) {
+    return '';
+  }
+  
+  foreach ($data as $type => $messages) {
+    foreach ($messages as $message) {
+      if(_rawr_is_html($message)) {
+        $grouped_messages['inline'][$type][] = $message;
+      }
+      else {
+        $grouped_messages['rawr'][$type][] = $message;
+      }
+    }
+  }
+
+  foreach ( $grouped_messages as $key => $content ) {
+    foreach ($content as $type => $messages) {
+      $rendered_messages[$key] .= "<div class=\"messages $type\">\n";
+      if (count($messages) > 1) {
+        $rendered_messages[$key] .= " <ul>\n";
+        foreach ($messages as $message) {
+          $rendered_messages[$key] .= '  <li>'. $message ."</li>\n";
+        }
+        $rendered_messages[$key] .= " </ul>\n";
+      }
+      else {
+        $rendered_messages[$key] .= $messages[0];
+      }
+      $rendered_messages[$key] .= "</div>\n";
+    }
+  }
+  
+  return "<div id='console'>{$rendered_messages['rawr']}</div>{$rendered_messages['inline']}";
+}
+
+function _rawr_is_html($text) {
+  // TODO: maybe make this more clever
+  $count = preg_match('/<\w+/m',$text);
+  if ($count > 0) { // is html
+    return TRUE;
+  }
+  // else
+  return FALSE;
 }
\ No newline at end of file
