diff --git a/a/countdown.module b/b/countdown.module
index 3ffa1db..b6258d1 100644
--- a/a/countdown.module
+++ b/b/countdown.module
@@ -159,6 +159,63 @@ function countdown_theme() {
   return array(
     'countdown' => array(
       'template'  => 'countdown',
+      'variables' => array('passed' => NULL, 'days_left' => NULL, 'hrs_left' => NULL, 'min_left' => NULL, 'secs_left' => NULL, 'message' => NULL),
     )
   );
 }
+
+/**
+ * Implement hook_preprocess_countdown() for default preprocessing
+ * to countdown block content.
+ */
+function template_preprocess_countdown(&$variables) {
+  
+  $time = time();
+  $difference = variable_get('countdown_timestamp', $time) - $time;
+  if ($difference < 0) {
+    $passed = 1;
+    $difference = abs($difference);
+  }
+  else {
+    $passed = 0;
+  }
+  
+  // Set passed variable for template
+  $variables['passed'] = (boolean) $passed;
+  
+  // Set rest of the values
+  $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));
+
+  $variables['days_left'] = $days_left;
+  $variables['message'] = format_plural($days_left, '1 day', '@count days');
+  if ($accuracy == 'h' || $accuracy == 'm' || $accuracy == 's') {
+    $variables['hrs_left'] = $hrs_left;
+    $variables['message'] .= format_plural($hrs_left, ', 1 hour', ', @count hours');
+  }
+  if ($accuracy == 'm' || $accuracy == 's') {
+    $variables['min_left'] = $min_left;
+    $variables['message'] .= format_plural($min_left, ', 1 minute', ', @count minutes');
+  }
+  if ($accuracy == 's') {
+    $variables['secs_left'] = $secs_left;
+    $variables['message'] .= format_plural($secs_left, ', 1 second', ', @count seconds');
+  }
+  
+  $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));
+  
+  // Finish default message
+  $variables['message'] .= 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');
+    $variables['message'] .= "<script type=\"text/javascript\"><!-- \ninit_countdown('$accuracy'); \n// --></script>";
+  }
+  
+}
diff --git a/a/countdown.tpl.php b/b/countdown.tpl.php
index 4f4cc5a..4c300af 100644
--- a/a/countdown.tpl.php
+++ b/b/countdown.tpl.php
@@ -7,48 +7,12 @@
  * Theme implementation to display a list of related content.
  *
  * Available variables:
- * - $items: the list.
+ * - $passed: FALSE if not passed, TRUE if passed
+ * - $days_left: Number of days left
+ * - $hrs_left: Number of hours left
+ * - $min_left: Number of minutes left
+ * - $secs_left: Number of seconds left
+ * - $message: Default message ready to be printed
  */
-$time = time();
-$difference = variable_get('countdown_timestamp', $time) - $time;
-if ($difference < 0) {
-  $passed = 1;
-  $difference = abs($difference);
-}
-else {
-  $passed = 0;
-}
-
-$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');
-}
-if ($accuracy == 's') {
-  print format_plural($secs_left, ', 1 second', ', @count seconds');
-}
-
-$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___
-<script type="text/javascript"><!--
-  init_countdown('$accuracy');
-// --></script>
-___EOS___;
-}
+?>
+<?php print $message; ?>
\ No newline at end of file
