diff --git a/countdown.css b/countdown.css
new file mode 100644
index 0000000..fb356e0
--- /dev/null
+++ b/countdown.css
@@ -0,0 +1,48 @@
+/**
+ * CSS selectors for the countdown block.
+ *
+ * These defaults work for the inline display style
+ * but once you move the labels to below the digit
+ * you will definitely want to override at least
+ * these selectors and possibly others too.
+ */
+
+#block-countdown-0 div.content div.countdown,
+#block-countdown-0 div.content span.countdown {
+  display: inline-block;
+}
+
+#countdown-digit-days,
+#countdown-digit-hrs,
+#countdown-digit-mins,
+#countdown-digit-secs,
+#countdown-label-days,
+#countdown-label-hrs,
+#countdown-label-mins,
+#countdown-label-secs {
+  text-align: center;
+}
+
+#countdown-digit-days,
+#countdown-label-days {
+  color: #600;
+}
+
+#block-countdown-0 div.content div.digit {
+  margin-left: 2px;
+}
+
+#block-countdown-0 div.content span.label {
+  margin-left: 2px;
+}
+
+/**
+ * When using inline display these are helpful. You
+ * will want to override them when displaying labels
+ * under the digits.
+ */
+#countdown-digit-hrs:before,
+#countdown-digit-mins:before,
+#countdown-digit-secs:before {
+  content: ", ";
+}
diff --git a/countdown.info b/countdown.info
index b1a7af3..8b5d5b4 100644
--- a/countdown.info
+++ b/countdown.info
@@ -1,4 +1,4 @@
 name = Countdown
 description = Adds a block to count the days, hours, minutes, and seconds since or until a specified event.
 package = "Event"
-core = 6.x
\ No newline at end of file
+core = 6.x
diff --git a/countdown.js b/countdown.js
index f09312e..e7b5a4c 100644
--- a/countdown.js
+++ b/countdown.js
@@ -1,4 +1,3 @@
-
 var _countdown_accuracy, _countdown_freq, _countdown_interval, _countdown_direction, _countdown_this;
 
 function init_countdown(accuracy) {
@@ -16,20 +15,20 @@ if (Drupal.jsEnabled) {
     _countdown_this.initTime[1] = 0;
     _countdown_this.initTime[2] = 0;
     _countdown_this.initTime[3] = 0;
-    _countdown_this.objEM[0].innerHTML = String('0');
-    _countdown_this.objEM[1].innerHTML = String('0');
-    _countdown_this.objEM[2].innerHTML = String('0');
-    _countdown_this.objEM[3].innerHTML = String('0');
+    _countdown_this.objDIV[0].innerHTML = String('0');
+    _countdown_this.objDIV[1].innerHTML = String('0');
+    _countdown_this.objDIV[2].innerHTML = String('0');
+    _countdown_this.objDIV[3].innerHTML = String('0');
   }
 
   jQuery.fn.extend({
     onready : function() { return this.each(function() { 
-      this.objEM = new Array();
+      this.objDIV = new Array();
       this.initTime = new Array();
       for (i = 0; i < this.childNodes.length; i ++) {
         thisChild = this.childNodes.item(i);
-        if (thisChild.tagName == 'EM') {
-          this.objEM[this.objEM.length] = thisChild;
+        if (thisChild.tagName == 'DIV') {
+          this.objDIV[this.objDIV.length] = thisChild;
           this.initTime[this.initTime.length] = parseInt(thisChild.innerHTML);
         }
         else if (thisChild.nodeName == '#text') {
@@ -72,7 +71,7 @@ if (Drupal.jsEnabled) {
             }
           }
           _countdown_this.initTime[accuracy] = newValue;
-          _countdown_this.objEM[accuracy].innerHTML = String(newValue);
+          _countdown_this.objDIV[accuracy].innerHTML = String(newValue);
         }
       }, _countdown_freq[_countdown_accuracy] * 1000);
     }); }
@@ -82,4 +81,4 @@ if (Drupal.jsEnabled) {
       $(".block-countdown .content").onready();
     }
   );
-}
\ No newline at end of file
+}
diff --git a/countdown.module b/countdown.module
index fccccd7..f9a0014 100644
--- a/countdown.module
+++ b/countdown.module
@@ -43,7 +43,7 @@ function countdown_block($op = 'list', $delta = 0, $edit = array()) {
       '#size' => 30,
       '#maxlength' => 200,
       '#description' => t("Event name you're counting to or from."),
-      '#required' => TRUE
+      '#required' => FALSE
     );
     $form['countdown_url'] = array(
       '#type' => 'textfield',
@@ -55,6 +55,19 @@ function countdown_block($op = 'list', $delta = 0, $edit = array()) {
       '#required' => FALSE
     );
 
+    $labels = array(
+      'inline' => 'Display labels inline',
+      'below' => 'Display labels below the digits',
+      'none' => 'Do not display labels',
+    );
+    $form['countdown_labels'] = array(
+      '#type' => 'select',
+      '#title' => t('Unit Labels'),
+      '#description' => t('Choose where you want the unit labels to be displayed.'),
+      '#default_value' => variable_get('countdown_labels', 'inline'),
+      '#options' => $labels,
+    );
+
     $form['countdown_accuracy'] = array(
       '#type' => 'radios',
       '#title' => t('Accuracy'),
@@ -132,6 +145,7 @@ function countdown_block($op = 'list', $delta = 0, $edit = array()) {
     variable_set('countdown_url', $edit['countdown_url']);
     variable_set('countdown_accuracy', $edit['countdown_accuracy']);
     variable_set('countdown_timestamp', mktime((int)$edit['hour'], (int)$edit['min'], (int)$edit['sec'], (int)$edit['month'], (int)$edit['day'], (int)$edit['year']));
+    variable_set('countdown_labels', $edit['countdown_labels']);
 
   case 'view':
     if (user_access('access content')) {
diff --git a/countdown.tpl.php b/countdown.tpl.php
index 7346410..aed34b6 100644
--- a/countdown.tpl.php
+++ b/countdown.tpl.php
@@ -8,6 +8,12 @@
  * Available variables:
  * - $items: the list.
  */
+define('COUNTDOWN_DAY_SECS', 60*60*24);
+define('COUNTDOWN_HOUR_SECS', 60*60);
+
+$path = drupal_get_path('module', 'countdown');
+drupal_add_css($path .'/countdown.css');
+
 $time = time();
 $difference = variable_get('countdown_timestamp', $time) - $time;
 if ($difference < 0) {
@@ -19,30 +25,37 @@ else {
 }
 
 $accuracy  = variable_get('countdown_accuracy', 'd');
-$days_left = floor($difference/60/60/24);
-$hrs_left  = floor(($difference - $days_left*60*60*24)/60/60);
-$min_left  = floor(($difference - $days_left*60*60*24 - $hrs_left*60*60)/60);
-$secs_left = floor(($difference - $days_left*60*60*24 - $hrs_left*60*60 - $min_left*60));
-
-print format_plural($days_left, '1 day', '@count days');
-if ($accuracy == 'h' || $accuracy == 'm' || $accuracy == 's') {
-  print format_plural($hrs_left, ', 1 hour', ', @count hours');
-}
-if ($accuracy == 'm' || $accuracy == 's') {
-  print format_plural($min_left, ', 1 minute', ', @count minutes');
+$days_left = floor($difference/COUNTDOWN_DAY_SECS);
+$hrs_left  = floor(($difference - $days_left*COUNTDOWN_DAY_SECS)/COUNTDOWN_HOUR_SECS);
+$min_left  = floor(($difference - $days_left*COUNTDOWN_DAY_SECS - $hrs_left*COUNTDOWN_HOUR_SECS)/60);
+$secs_left = floor(($difference - $days_left*COUNTDOWN_DAY_SECS - $hrs_left*COUNTDOWN_HOUR_SECS - $min_left*60));
+
+if (variable_get('countdown_labels', '') == 'inline') {
+  print t('<div id="countdown-digit-days" class="countdown digit">!i</span>', array('!i' => format_plural($days_left, '1</div><div id="countdown-label-days" class="countdown label">day', '@count</div><span id="countdown-label-days" class="countdown label">days')));
+  if ($accuracy == 'h' || $accuracy == 'm' || $accuracy == 's') {
+    print  t('<div id="countdown-digit-hrs" class="countdown digit">!i</span>', array('!i' => format_plural($hrs_left, '1</div><div id="countdown-label-hrs" class="countdown label">hour', '@count</div><span id="countdown-label-hrs" class="countdown label">hours')));
+  }
+  if ($accuracy == 'm' || $accuracy == 's') {
+    print  t('<div id="countdown-digit-mins" class="countdown digit">!i</span>', array('!i' => format_plural($min_left, '1</div><div id="countdown-label-mins" class="countdown label">minute', '@count</div><span id="countdown-label-mins" class="countdown label">minutes')));
+  }
+  if ($accuracy == 's') {
+    print t('<div id="countdown-digit-secs" class="countdown digit">!i</span>', array('!i' => format_plural($secs_left, '1</div><div id="countdown-label-secs" class="countdown label">second', '@count</div><span id="countdown-label-secs" class="countdown label">seconds')));
+  }
 }
-if ($accuracy == 's') {
-  print format_plural($secs_left, ', 1 second', ', @count seconds');
+else {
+  print t('<div id="countdown-digit-days" class="countdown digit">!i</div>', array('!i' => $days_left));
+  if ($accuracy == 'h' || $accuracy == 'm' || $accuracy == 's') {
+    print  t('<div id="countdown-digit-hrs" class="countdown digit">!i</div>', array('!i' => $hrs_left));
+  }
+  if ($accuracy == 'm' || $accuracy == 's') {
+    print  t('<div id="countdown-digit-mins" class="countdown digit">!i</div>', array('!i' => $min_left));
+  }
+  if ($accuracy == 's') {
+    print t('<div id="countdown-digit-secs" class="countdown digit">!i</div>', array('!i' => $secs_left));
+  }
 }
 
-$event_name = variable_get('countdown_event_name', '');
-$url = variable_get('countdown_url', '');
-$event_name = empty($url) || $url == 'http://' ? $event_name : l($event_name, $url, array('absolute' => TRUE));
-
-print t(($passed) ? ' since !s.' : ' until !s.', array('!s' => $event_name));
-
 if ($accuracy != 'd') {
-  $path = drupal_get_path('module', 'countdown');
   drupal_add_js($path .'/countdown.js');
 
   print <<<___EOS___
@@ -51,3 +64,27 @@ if ($accuracy != 'd') {
 // --></script>
 ___EOS___;
 }
+
+if (variable_get('countdown_labels', '') == 'below') {
+  print '<div id="countdown-labels">';
+  print t('<span id="countdown-label-days" class="countdown label">!s</span>', array('!s' => format_plural($days_left, 'day', 'days')));
+  if ($accuracy == 'h' || $accuracy == 'm' || $accuracy == 's') {
+    print  t('<span id="countdown-label-hrs" class="countdown label">!s</span>', array('!s' => format_plural($hrs_left, 'hr', 'hrs')));
+  }
+  if ($accuracy == 'm' || $accuracy == 's') {
+    print  t('<span id="countdown-label-mins" class="countdown label">!s</span>', array('!s' => format_plural($hrs_left, 'min', 'mins')));
+  }
+  if ($accuracy == 's') {
+    print t('<span id="countdown-label-secs" class="countdown label">!s</span>', array('!s' => format_plural($hrs_left, 'sec', 'secs')));
+  }
+  print '</div>';
+}
+
+if ($event_name = variable_get('countdown_event_name', '')) {
+  $event_url = variable_get('countdown_url', '');
+  print '<span id="countdown-event" class="countdown event">';
+  print t(($passed) ? 'since !s.' : 'until !s.', array('!s' => empty($event_url) ? $event_name : l($event_name, $event_url, array('absolute' => TRUE))));
+  print '</span>';
+}
+
+?>
