diff --git a/block_course_overview_uwmoodle.php b/block_course_overview_uwmoodle.php
index f0efd4921a88f69cdb41a266b2951b82a569d10b..9a40467a130950161c028c116542ff1a689c2871 100644
--- a/block_course_overview_uwmoodle.php
+++ b/block_course_overview_uwmoodle.php
@@ -69,6 +69,11 @@ class block_course_overview_uwmoodle extends block_base {
             set_user_preference('block_course_overview_uwmoodle-show-coursenews-'.$uwmcourse, $uwmshow);
         }
 
+        $currentterm = get_config('block_course_overview_uwmoodle', 'currentterm');
+        if (!$currentterm) {
+            $currentterm = self::TERM_OTHER;
+        }
+
         // Find the termcode for each course
         if (!empty($courses)) {
             $courseids = array();
@@ -97,8 +102,14 @@ class block_course_overview_uwmoodle extends block_base {
             }
         }
         // Sort terms, descending
-        ksort($terms);
-        $terms = array_reverse($terms, true);
+        // TERM_OTHER courses get ordered right after current term
+        $sortfcn = function($a,$b) use ($currentterm) {
+            if ($a == self::TERM_OTHER) { $a = $currentterm - 0.5; }
+            if ($b == self::TERM_OTHER) { $b = $currentterm - 0.5; }
+            if ($a == $b) {return 0;}
+            return ($a > $b)? -1 : 1;
+        };
+        uksort($terms, $sortfcn);
 
         // Update lastaccess for news summary
         foreach ($courses as $c) {
@@ -133,7 +144,8 @@ class block_course_overview_uwmoodle extends block_base {
                 $yuiitems[] = "term-$termcode";
                 $termname = $this->get_term_name($termcode);
 
-                $showterm = get_user_preferences("block_course_overview_uwmoodle-show-term-$termcode", 1);
+                $defaultshowterm = ($termcode == $currentterm || $termcode == self::TERM_OTHER)? 1 : 0;
+                $showterm = get_user_preferences("block_course_overview_uwmoodle-show-term-$termcode", $defaultshowterm);
                 if (!$showterm) {
                     $class = 'collapsed';
                     $ariaexpanded = "aria-expanded='false'";
@@ -141,13 +153,20 @@ class block_course_overview_uwmoodle extends block_base {
                     $class = '';
                     $ariaexpanded = "aria-expanded='true'";
                 }
+                if ($termcode == $currentterm) {
+                    $termclass = 'currentterm';
+                } else if ($termcode == self::TERM_OTHER) {
+                    $termclass = 'miscterm';
+                } else {
+                    $termclass = 'noncurrentterm';
+                }
                 $aria = "$ariaexpanded aria-controls='uwm-{$this->instance->id}-term-$termcode-list' role='button'";
                 $showhidetermurl = $PAGE->url->out_as_local_url(true, array('uwmterm' => $termcode, 'uwmshow' => ($showterm)? 0 : 1 ));
 
                 echo "<li class='$class'>";
-                echo "<h3 class='term treeitem'>";
+                echo "<h3 class='$termclass'>";
                 // The data-ajax attribute prevents the Moodle mobile theme from overriding the AJAX behavior
-                echo "<a class='showhide' data-ajax='false' $aria href='$showhidetermurl' id='uwm-{$this->instance->id}-term-$termcode'><span>$termname</span></a>";
+                echo "<a class='showhide' data-ajax='false' $aria href='$showhidetermurl' id='uwm-{$this->instance->id}-term-$termcode'><span class='term treeitem'>$termname</span></a>";
                 echo "</h3>";
                 echo "<ul class='treelist' id='uwm-{$this->instance->id}-term-$termcode-list' role='region'>";
                 foreach ($termcourses as $course) {
@@ -161,6 +180,7 @@ class block_course_overview_uwmoodle extends block_base {
                     $newsclass = '';
                     $showhidehtml = '';
                     if ($hasnews) {
+                        $defaultshownews = ($termcode == $currentterm || $termcode == self::TERM_OTHER)? 1 : 0;
                         $shownews = get_user_preferences('block_course_overview_uwmoodle-show-coursenews-'.$course->id, 1);
                         $yuiitems[] = "coursenews-$course->id";
                         $showhidenewsurl = $PAGE->url->out_as_local_url(true, array('uwmcourse' => $course->id, 'uwmshow' => ($shownews)? 0 : 1));
@@ -176,7 +196,7 @@ class block_course_overview_uwmoodle extends block_base {
                         $aria = "$ariaexpanded aria-controls='uwm-{$this->instance->id}-coursenews-{$course->id}-list' role='button'";
                         // The data-ajax attribute prevents the Moodle mobile theme from overriding the AJAX behavior
                         $showhidehtml =  "<div class='shownews'><a data-ajax='false' $aria href='$showhidenewsurl' id='uwm-{$this->instance->id}-coursenews-$course->id' >";
-                        $showhidehtml .= "<span class='treeitem'><span class='showhidetext'>$showhidetext</span> news";
+                        $showhidehtml .= "<span class='coursenews treeitem'><span class='showhidetext'>$showhidetext</span> news";
                         $showhidehtml .= "</span></a></div>";
 
                     }
@@ -259,11 +279,75 @@ class block_course_overview_uwmoodle extends block_base {
                 $name = sprintf("Summer %d courses", $year);
                 break;
             default:
-                $name = "Other courses";
+                $name = "Miscellaneous courses";
         }
         return $name;
     }
 
+    /**
+     * Get the current term from the datastore, and update user show/hide preferences when it changes.
+     *
+     * @return boolean true on success
+     */
+    public function update_current_term() {
+        global $CFG, $DB;
+
+        $oldcurrentterm = get_config('block_course_overview_uwmoodle', 'currentterm');
+        try {
+            $currentterm = $this->get_current_term();
+        } catch (Exception $e) {
+            mtrace("Error fetching current term: ".$e->getMessage());
+            return false;
+        }
+        if ($currentterm === false) {
+            mtrace("No current term found");
+            return false;
+        }
+
+        if ($currentterm === $oldcurrentterm) {
+            // no change, so return
+            return true;
+        }
+        mtrace('new current term: '.$currentterm);
+
+        // New term, so clear user preferences for both current and previous term
+        if ($oldcurrentterm) {
+            $DB->delete_records('user_preferences', array('name'=> 'block_course_overview_uwmoodle-show-term-'.$oldcurrentterm));
+        }
+        $DB->delete_records('user_preferences', array('name'=> 'block_course_overview_uwmoodle-show-term-'.$currentterm));
+
+        set_config('currentterm', $currentterm, 'block_course_overview_uwmoodle');
+        return true;
+    }
+
+    /**
+     * Fetch current term from CHUB.  Throw exception on CHUB error.
+     *
+     * @return string|false  term_code or false if none found.
+     */
+    public function get_current_term() {
+        global $CFG;
+
+        require_once($CFG->dirroot.'/enrol/wisc/lib/datastore.php');
+        $datastore = wisc_timetable_datastore::get_timetable_datastore();
+        $terms = $datastore->getAvailableTerms();
+
+        $now = time();
+        $futureterms = array();
+        foreach ($terms as $term) {
+            // check that term hasn't ended and doesn't have an odd termCode
+            // odd term codes (e.g. Winter) are never considered the current term
+            if ($term->endDate > $now && ($term->termCode % 2 != 1)) {
+                $futureterms[] = $term->termCode;
+            }
+        }
+        if (!empty($futureterms)) {
+            $currentterm = min($futureterms);
+        } else {
+            $currentterm = false;
+        }
+        return $currentterm;
+    }
 
     /**
      * allow the block to have a configuration page
@@ -282,4 +366,13 @@ class block_course_overview_uwmoodle extends block_base {
     public function applicable_formats() {
         return array('my-index'=>true);
     }
+
+    /**
+     * Block cron to update currentterm
+     *
+     * @return boolean true on success
+     */
+    public function cron() {
+        return $this->update_current_term();
+    }
 }
\ No newline at end of file
diff --git a/styles.css b/styles.css
index dfd2c61708b388e29d5d3770cbc22b95369fab60..437fbd4504b2f8a160cd5a45847a819f17fe01ac 100644
--- a/styles.css
+++ b/styles.css
@@ -1,17 +1,20 @@
-.block_course_overview_uwmoodle .treeitem span {
-    background-image: url([[pix:t/expanded]]);
+.block_course_overview_uwmoodle .treeitem {
     background-position: 0 40%;
     background-repeat: no-repeat;
     padding-left: 18px;
     text-align: left;
 }
-.block_course_overview_uwmoodle .showhidespacer {padding-left: 18px;}
-.block_course_overview_uwmoodle li.collapsed .treeitem span {background-image: url([[pix:t/collapsed]]);}
+
+.block_course_overview_uwmoodle .treeitem.term {background-image: url([[pix:t/expanded]]);}
+.block_course_overview_uwmoodle li.collapsed .treeitem.term {background-image: url([[pix:t/collapsed]]);}
+.block_course_overview_uwmoodle .treeitem.coursenews {background-image: url([[pix:t/switch_minus]]);}
+.block_course_overview_uwmoodle li.collapsed .treeitem.coursenews {background-image: url([[pix:t/switch_plus]]);}
 .block_course_overview_uwmoodle li.collapsed ul {display: none;}
 .block_course_overview_uwmoodle li ul {margin: 0;padding-left:16px;}
 .block_course_overview_uwmoodle .coursebox h3 {margin-left:10px;}
-.block_course_overview_uwmoodle h3.term a {color:#000;}
-.block_course_overview_uwmoodle h3.term {font-size:1.1em;}
+.block_course_overview_uwmoodle h3 {font-size:1.1em;}
+.block_course_overview_uwmoodle .noncurrentterm .term {color:#AAAAAA;}
+.block_course_overview_uwmoodle .term {color:#000;}
 .block_course_overview_uwmoodle .shownews {float:right;color:#333;font-weight:normal;margin-right:1em;font-size:91%;}
 .block_course_overview_uwmoodle a:focus,
 .block_course_overview_uwmoodle a:hover,
diff --git a/version.php b/version.php
index 5b1614a19bfa6a8dcc2e6aafe04130a2bc4841fa..f79fc33164cdfb676cc298915d99cccbf7674ee0 100644
--- a/version.php
+++ b/version.php
@@ -18,10 +18,11 @@
 defined('MOODLE_INTERNAL') || die();
 
 $plugin->component = 'block_course_overview_uwmoodle';
-$plugin->version = 2013031300;
-$plugin->release = '1.0)';
-$plugin->requires = 2012062500;
-$plugin->maturity = MATURITY_RC;
+$plugin->version   = 2013031500;
+$plugin->release   = '1.0';
+$plugin->requires  = 2012062500;
+$plugin->maturity  = MATURITY_RC;
+$plugin->cron      = 43200;               // Set min time between cron executions to 12 hours
 
 $plugin->dependencies = array(
         'enrol_wisc' => 2013030400,