diff --git a/panels_breadcrumbs.module b/panels_breadcrumbs.module
index 84a774d..bf2abab 100644
--- a/panels_breadcrumbs.module
+++ b/panels_breadcrumbs.module
@@ -41,7 +41,7 @@ function panels_breadcrumbs_variant_breadcrumb_form($form, &$form_state) {
   ctools_include('context-task-handler');
 
   $handler = &$form_state['handler'];
-  $contexts = ctools_context_handler_get_all_contexts(&$form_state['task'], &$form_state['subtask'], $handler);
+  $contexts = ctools_context_handler_get_all_contexts($form_state['task'], $form_state['subtask'], $handler);
 
   if (empty($handler->conf['panels_breadcrumbs_state'])) {
     $handler->conf['panels_breadcrumbs_state'] = '0';
@@ -121,29 +121,48 @@ function panels_breadcrumbs_ctools_render_alter($info, $page, $context) {
   // If no titles or paths are defined, also bail out.
   if (!isset($conf['panels_breadcrumbs_titles']) || !isset($conf['panels_breadcrumbs_paths'])) return;
 
-  // Look for Placeholder Tokens in Titles and Paths and Convert them for this Display
-  $titles = ctools_context_keyword_substitute($conf['panels_breadcrumbs_titles'], array(), $display_context);
-  $paths = ctools_context_keyword_substitute($conf['panels_breadcrumbs_paths'], array(), $display_context);
-
   // Breaks titles and paths into arrays and removes empty keys.
-  $titles = array_filter(explode(PHP_EOL, $titles), 'strlen');
-  $paths = array_filter(explode(PHP_EOL, $paths), 'strlen');
+  $titles = array_filter(explode(PHP_EOL, $conf['panels_breadcrumbs_titles']), 'strlen');
+  $paths = array_filter(explode(PHP_EOL, $conf['panels_breadcrumbs_paths']), 'strlen');
 
   // Sets the First Crumb to Home.
   // TODO Should probably add an admin configuration page to change this.
-  $breadcrumbs = array(l(t('Home'), '<front>'));
+  array_unshift($titles, 'Home');
+  array_unshift($paths, '<front>');
+
+  $breadcrumbs_info = array();
+  foreach($titles as $key => $title) {
+    $breadcrumbs_info[] = array(
+      'title' => $title,
+      'title wrappers' => array('t'),
+      'href' => $paths[$key],
+      'href wrappers' => array(),
+    );
+  }
+
+  drupal_alter('panels_breadcrumbs', $breadcrumbs_info, $display_context);
 
   // Iterate through all titles and add them to the breadcrumb
-  foreach ($titles as $key => $title) {
+  $breadcrumbs = array();
+  foreach ($breadcrumbs_info as $item) {
+
+    // Look for Placeholder Tokens in Titles and Paths and Convert them for this Display
+    $title = trim(ctools_context_keyword_substitute($item['title'], array(), $display_context));
+    $path = trim(ctools_context_keyword_substitute($item['href'], array(), $display_context));
 
-    $title = trim($title);
-    $path = trim($paths[$key]);
+    foreach($item['title wrappers'] as $function) {
+      $title = $function($title);
+    }
+
+    foreach($item['href wrappers'] as $function) {
+      $title = $function($title);
+    }
 
     if ($path == '<none>') {
-      $breadcrumbs[] = t($title);
+      $breadcrumbs[] = $title;
     }
     else {
-      $breadcrumbs[] = l(t($title), $path);
+      $breadcrumbs[] = l($title, $path);
     }
 
   }
@@ -152,4 +171,4 @@ function panels_breadcrumbs_ctools_render_alter($info, $page, $context) {
   $breadcrumbs = array_unique($breadcrumbs);
 
   drupal_set_breadcrumb($breadcrumbs);
-}
\ No newline at end of file
+}
