diff --git a/theming_example/theming_example.css b/theming_example/theming_example.css
new file mode 100644
index 0000000..b503418
--- /dev/null
+++ b/theming_example/theming_example.css
@@ -0,0 +1,11 @@
+/*
+ * style the list
+ * for OL you can have
+ * decimal | lower-roman | upper-roman | lower-alpha | upper-alpha
+ * for UL you can have
+ * disc | circle | square or an image eg url(x.png)
+ * you can also have 'none'
+ */
+ol.theming_example_mylist {
+  list-style-type: upper-alpha;
+}
diff --git a/theming_example/theming_example.info b/theming_example/theming_example.info
new file mode 100644
index 0000000..73bec9c
--- /dev/null
+++ b/theming_example/theming_example.info
@@ -0,0 +1,5 @@
+name = Theming example
+description = An example module showing how to use theming.
+package = Example modules
+core = 7.x
+;files[] = theming_example.test
diff --git a/theming_example/theming_example.module b/theming_example/theming_example.module
new file mode 100644
index 0000000..f2680f6
--- /dev/null
+++ b/theming_example/theming_example.module
@@ -0,0 +1,254 @@
+<?php
+
+/**
+ * @file
+ * This is an example outlining how a module can use theming
+ * to expose module output so that others can alter things to
+ * suit their needs before rendering to html.
+ */
+
+/** TODO
+ * hook_theme()
+ * theme functions
+ * theme templates
+ * hook_preprocess(),
+ * Keeping content as renderable as long as possible
+ * Theming forms
+ */
+
+/**
+ * Implements hook_menu().
+ *
+ * The @link menu_example.module Menu Example @endlink provides extensive
+ * examples for hook_menu().
+ */
+function theming_example_menu() {
+  $items['examples/theming_example'] = array(
+    'title' => 'Theming Examples',
+    'description' => 'Some theming examples.',
+    'page callback' => 'theming_example_page',
+    'access callback' => TRUE,
+    'access arguments' => array('access content'),
+  );
+  $items['examples/theming_example/theming_example_list_page'] = array(
+    'title' => 'Theming a list Example',
+    'page callback' => 'theming_example_list_page',
+    'access arguments' => array('access content'),
+    'weight' => 1,
+  );
+  $items['examples/theming_example/theming_example_order_form'] = array(
+    'title' => 'Theming a form Example 1',
+    'page callback'    => 'drupal_get_form',
+    'page arguments'   => array('theming_example_order_form'),
+    'access arguments' => array('access content'),
+    'weight' => 2,
+  );
+  $items['examples/theming_example/theming_example_text_form'] = array(
+    'title' => 'Theming a form Example 2',
+    'page callback'    => 'drupal_get_form',
+    'page arguments'   => array('theming_example_text_form'),
+    'access arguments' => array('access content'),
+    'weight' => 3,
+  );
+
+  return $items;
+
+}
+
+/**
+ * Initial landing page
+ *
+ *
+ */
+function theming_example_page() {
+  $content[] = t('Some examples of pages and forms that are run through a theming function.');
+  $content[] = l(t('Simple page with a list'), 'examples/theming_example/theming_example_list_page');
+  $content[] = l(t('Simple form 1'), 'examples/theming_example/theming_example_order_form');
+  $content[] = l(t('Simple form 2'), 'examples/theming_example/theming_example_text_form');
+  return theme('theming_example_page', array('content' => $content));
+}
+
+/**
+ * An example page where the output is supplied as an array which
+ * is themed into a list and styled with css
+ *
+ */
+function theming_example_list_page() {
+  drupal_add_css(drupal_get_path('module', 'theming_example') . '/theming_example.css');
+  $title = t('My list');
+  $list = array(t('Eeny'), t('Meeny'), t('Miny'), t('Mo'));
+  return theme('theming_example_list_page', array('title' => $title, 'content' => $list));
+}
+
+
+/**
+ * A simple form that displays a select box and submit button
+ *
+ *
+ */
+function theming_example_order_form($form, &$form_state) {
+    $orderlist = array(
+    1 => t('Newest first'),
+    2 => t('Newest last'),
+    3 => t('Edited first'),
+    4 => t('Edited last'),
+    5 => t('By name'),
+  );
+  $form['theming_example_order'] = array(
+    '#type' => 'select',
+    '#options' => $orderlist,
+    '#title' => t('Order'),
+  );
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Go'),
+  );
+  return $form;
+}
+
+/**
+ * A simple form that displays a textfield and submit button
+ *
+ *
+ */
+function theming_example_text_form($form, &$form_state) {
+  $form['theming_example_text'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Some input'),
+    '#required' => TRUE,
+  );
+  $form['text_form_submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Go'),
+  );
+  return $form;
+
+}
+
+/**
+ * Implements hook_theme().
+ *
+ * see http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_theme/7
+ */
+function theming_example_theme() {
+  return array(
+    'theming_example_page' => array(
+      'variables' => array(
+        'content' => NULL,
+      ),
+    ),
+    'theming_example_list_page' => array(
+      'variables' => array(
+        'title' => NULL,
+        'content' => NULL,
+      ),
+    ),
+    'theming_example_order_form'  => array(
+      'render element' => 'form',
+    ),
+    'theming_example_text_form'  => array(
+      'render element' => 'form',
+      'template' => 'theming_example_text_form',
+    ),
+  );
+}
+
+/**
+ * Theming the initial landing page.
+ *
+ *
+ *
+ */
+function theme_theming_example_page($variables) {
+
+  $content = $variables['content'];
+  $output = '';
+  foreach ($content AS $count => $para) {
+    if (! $count) {
+      // first one
+      $output .= '<p><b>' . $para . '</b></p>';
+    }
+    else {
+      $output .= '<p>' . $para . '</p>';
+    }
+  }
+
+  return $output;
+}
+
+/**
+ * Theming the simple list page
+ *
+ *
+ */
+function theme_theming_example_list_page($variables) {
+
+  $title = $variables['title'];
+  $content = $variables['content'];
+
+  /*
+  // simple list, title separate
+  $output = '<h2>' . $title . '</h2>';
+  $output .= theme('item_list',
+    array(
+      'items' => $content,
+    )
+  );
+  */
+
+  // add the title to the list theme and
+  // state the list type. This defaults to 'ul'.
+  // add a css class so that you can modify the list styling
+  $output = theme('item_list',
+    array(
+      'items' => $content,
+      'title' => $title,
+      'type' => 'ol',
+      'attributes' => array('class' => 'theming_example_mylist'),
+    )
+  );
+
+  return $output;
+}
+
+/**
+ * Theming a simple form 1
+ * in this example we collect the title, theme it manually and
+ * empty the form title. We also wrap the form in a div
+ */
+function theme_theming_example_order_form($variables) {
+  $form = $variables['form'];
+  $title = $form['theming_example_order']['#title'];
+  $form['theming_example_order']['#title'] = '';
+  $output = '<b>' . $title . '</b>';
+  $form['theming_example_order']['#prefix'] = '<div class="container-inline">';
+  $form['submit']['#suffix'] = '</div>';
+  $output .= drupal_render_children($form);
+  return $output;
+}
+
+
+/**
+ * Theming a simple form 2
+ * in this example the form is preprocessed ready for output in
+ * theming_example_text_form.tpl.php
+ */
+function template_preprocess_theming_example_text_form(&$variables) {
+  $variables['text_form_content'] = array();
+  $text_form_hidden = array();
+  // Provide variables named after form keys so themers can print each element independently.
+  foreach (element_children($variables['form']) as $key) {
+    $type = $variables['form'][$key]['#type'];
+    if ($type == 'hidden' || $type == 'token') {
+      $text_form_hidden[] = drupal_render($variables['form'][$key]);
+    }
+    else {
+      $variables['text_form_content'][$key] = drupal_render($variables['form'][$key]);
+    }
+  }
+  // Hidden form elements have no value to themers. No need for separation.
+  $variables['text_form_content']['hidden'] = implode($text_form_hidden);
+  // Collect all form elements to make it easier to print the whole form.
+  $variables['text_form'] = implode($variables['text_form_content']);
+
+}
diff --git a/theming_example/theming_example.tpl.php b/theming_example/theming_example.tpl.php
new file mode 100644
index 0000000..e69de29
diff --git a/theming_example/theming_example_text_form.tpl.php b/theming_example/theming_example_text_form.tpl.php
new file mode 100644
index 0000000..649887c
--- /dev/null
+++ b/theming_example/theming_example_text_form.tpl.php
@@ -0,0 +1,17 @@
+<?php
+/**
+ * @file
+ * Template file for theming_example_text_form
+ *
+ * The array $text_form_content contains the individual form components
+ * To view them in the source html use this
+ *
+ * <?php print '<!--' . print_r($text_form_content, TRUE) . '-->'; ?>
+ *
+ */
+?>
+<!-- theming_example_text_form template -->
+<div class="container-inline">
+<?php  print $text_form; ?>
+</div>
+<!-- /theming_example_text_form template -->
