diff --git a/README.md b/README.md
index 47787870..42b7efd6 100644
--- a/README.md
+++ b/README.md
@@ -92,6 +92,39 @@ If you would like to contribute, please...
View the [complete change log here](//github.com/Mottie/tablesorter/wiki/Changes).
+#### Version 2.24.4 (11/10/2015)
+
+* Core
+ * `sortRestart` works again with multi-row headers. Fixes [issue #1074](https://github.com/Mottie/tablesorter/issues/1074).
+ * Add `sortDisabled` language setting; used in aria-labels.
+* Docs
+ * Update `group_formatter` docs. See [issue #1077](https://github.com/Mottie/tablesorter/issues/1077).
+ * Add clarification & missing possible values. See [issue #1070](https://github.com/Mottie/tablesorter/issues/1070).
+ * Fixed mixed content issue, broken links (beta-testing demos) & other stuff.
+ * Add [filter + jQuery UI Selectmenu demo](http://mottie.github.io/tablesorter/docs/example-widget-filter-selectmenu.html). See [issue #1060](https://github.com/Mottie/tablesorter/issues/1060)
+ * Misc updates.
+* Filter
+ * Convert filters to strings using conventional methods.
+ * Prevent "OR" filter type from splitting up regex string. See [issue #1070]https://github.com/Mottie/tablesorter/issues/1070).
+ * `filter_selectSource` option now accepts an array of objects ([demo](http://mottie.github.io/tablesorter/docs/example-widget-filter-selectmenu.html)).
+* Group
+ * Include group & row data parameters in `group_formatter`. Fixes [issue #1077](https://github.com/Mottie/tablesorter/issues/1077).
+* HeaderTitles
+ * Update aria-label usage.
+* Math
+ * Avoid nested table math cells. See [Stackoverflow](http://stackoverflow.com/q/33631298/145346).
+* Pager
+ * Clear `tbody` prior to calling `ajaxProcessing`. This again allows the developer to add the HTML to the table instead of needing to return it.
+* Sort2Hash
+ * Make widget functions accessible.
+ * Add 2 utility functions to simplify hash processing.
+* Toggle
+ * Add new widget to enable/disable sort & filter. See [issue #1075](https://github.com/Mottie/tablesorter/issues/1075).
+* Parser
+ * Add "file-extension" parser.
+* Misc
+ * Grunt: Fix uglify comment removal & update dist folder.
+
#### Version 2.24.3 (11/4/2015)
* Core
@@ -109,104 +142,3 @@ View the [complete change log here](//github.com/Mottie/tablesorter/wiki/Changes
* Misc
* Restory empty bower.json ignore setting... bower is installing an empty dist folder.
-
-#### Version 2.24.1 (11/2/2015)
-
-* Core
- * Cache "shortDate" parser & time parser now extracts the time.
-* Group
- * Add optimizations from [pull #830](https://github.com/Mottie/tablesorter/pull/830); thanks to [VorontsovIE](https://github.com/VorontsovIE)!
- * Update [demo](http://mottie.github.io/tablesorter/docs/example-widget-grouping.html) to use new "weekday-index" parser when "group-date-week" is set, and updated "time" parser when "group-date-time" is set.
-* Print
- * Rows option now accepts custom css selectors.
-* Sort2Hash
- * Remove history push state as it ignored other tables on the page.
-* Parsers
- * Globalization parser now caches the `Globalize` object in a same named option.
- * Convert month & weekday parsers to utilize globalization data.
- * Add "weekday-index" parser - this parser ignores the actual date but saves the weekday from a date object
-* Misc
- * Revert bower.json changes in [pull #1063](https://github.com/Mottie/tablesorter/pull/1063); Fixes [issue #1068](https://github.com/Mottie/tablesorter/issues/1068).
-
-#### Version 2.24.0 (10/31/2015)
-
-* Docs
- * Fix mixed content using GitHub buttons on main page. See [pull #1029](https://github.com/Mottie/tablesorter/pull/1029); thanks [OmgImAlexis](https://github.com/OmgImAlexis)!
- * Clarify use of pager `ajaxUrl` option.
- * Add theme class to tables to prevent FOUC.
- * Fix left menu push. The body no longer squeezes the content.
- * Update stickyHeaders after menu close.
- * Include horizontal scroll while jumping to search result.
- * Add some examples (`filter_cssFilter`).
-* Global
- * Call internal functions directly; stop using triggered events.
-* Core
- * Use plain javascript to set index attribute & remove unused variable. See [issue #1048](https://github.com/Mottie/tablesorter/issues/1048).
- * Add "entire column `colspan`" support. See issues [#485](https://github.com/Mottie/tablesorter/issues/485), [#746](https://github.com/Mottie/tablesorter/issues/746) & [#1047](https://github.com/Mottie/tablesorter/issues/1047).
- * Fix parser detect & sortVars on columns that don't exist due to colspan. See issues [#485](https://github.com/Mottie/tablesorter/issues/485), [#746](https://github.com/Mottie/tablesorter/issues/746) & [#1047](https://github.com/Mottie/tablesorter/issues/1047).
- * Reformat structure & expand variable names.
- * Add `rowFilter` parameter to `getColumnText` function.
- * Fix multisort indicators. Fixes [issue #1005](https://github.com/Mottie/tablesorter/issues/1005), again.
- * `sortAppend` now accepts an object of column references; see [Stackoverflow](http://stackoverflow.com/q/33177910/145346).
- * Internalize sort counter & fix spanned sorts.
- * Add `"tablesorter-ready"` event.
- * Add widget from class before adding widget options.
- * Maintaining support for IE7-8 until 1/12/16.
-* Chart
- * Fix `chart_layout` column indexing.
-* ColumnSelector
- * Add `mediaqueryHidden` option. Resolves [issue #964](https://github.com/Mottie/tablesorter/issues/964).
- * Extra rows & colspans now supported in `thead` & `tfoot`. Fixes [issue #501](https://github.com/Mottie/tablesorter/issues/501).
- * Fix jscs reported issues.
-* Filter
- * Encode/decode filters in case they end up in cookies. See [issue #1026](https://github.com/Mottie/tablesorter/issues/1026).
- * Add "entire column `colspan`" support. See issues [#485](https://github.com/Mottie/tablesorter/issues/485), [#746](https://github.com/Mottie/tablesorter/issues/746) & [#1047](https://github.com/Mottie/tablesorter/issues/1047).
- * `hideFilters` applies to stickyHeaders again. Fixes [issue #1050](https://github.com/Mottie/tablesorter/issues/1050).
- * Prevent error in `formatterUpdated`. Fixes [issue #1056](https://github.com/Mottie/tablesorter/issues/1056).
-* Grouping
- * Prevent error if `group_forceColumn` is improperly defined. See [issue #1030](https://github.com/Mottie/tablesorter/issues/1030).
- * Improve compatibility with [jQuery Globalize](https://github.com/jquery/globalize); Find [more details here](http://mottie.github.io/tablesorter/docs/example-widget-grouping.html#globalization).
- * Update header in pager with `removeRows:true`. Fixes [issue #1035](https://github.com/Mottie/tablesorter/issues/1035).
-* HeaderTitles
- * Switch to use internalized sort counter.
-* Lazyload
- * Add new widget. [Demo](http://mottie.github.io/tablesorter/docs/example-widget-lazyload.html)
-* Math
- * Created new calculation type "below". It works just like "above" except in other direction starting from top to bottom. See [pull #1027](https://github.com/Mottie/tablesorter/pull/1027); thanks [LvLynx](https://github.com/LvLynx)!
- * Tweak changes & more tweaks for better compression.
- * Detach table prior to indexing all cells. See [issue #1048](https://github.com/Mottie/tablesorter/issues/1048).
- * Add `math_none` option.
- * Include `config` parameter in math equations - needed for `math_none` option.
-* Output
- * Correct `formatContent` function comment (missing widgetOptions variable)
- * Do not include nested table headers with parent. Fixes [issue #1040](https://github.com/Mottie/tablesorter/issues/1040).
-* Pager
- * Clear tbody if no data returned by ajax. See [issue #1032](https://github.com/Mottie/tablesorter/issues/1032).
- * Add "all" setting for page size methods; includes select option & all methods. See [issue #1055](https://github.com/Mottie/tablesorter/issues/1055).
- * Fix pager widget demo destroy method.
- * destroyPager again reveals all rows. Fixes [issue #1055](https://github.com/Mottie/tablesorter/issues/1055).
- * Parse page numbers to prevent user seeing `NaN`.
- * Parse page size updates.
-* Print
- * Internal variable tweaks.
- * Include css to hide filter rows. Fixes [issue #1046](https://github.com/Mottie/tablesorter/issues/1046).
- * Add print delay; allows browsers to render print preview.
-* Scroller
- * Fix `scroller_barWidth` issue in iOS. See [pull #1062](https://github.com/Mottie/tablesorter/pull/1062); thanks [fire-wally](https://github.com/fire-wally)!
-* Sort2Hash
- * Update to include pager (page & size) and filter parameters.
-* SortTbodies
- * Moved config string defaults to `$.tablesorter.strings` to match core reformatting.
-* StickyHeaders
- * `hideFilters` applies to stickyHeaders again. Fixes [issue #1050](https://github.com/Mottie/tablesorter/issues/1050).
-* View
- * Add new widget. [Demo](http://mottie.github.io/tablesorter/docs/example-widget-view.html).
- * Fix jscs reported issues.
-* Parsers
- * Globalize parser now allows a different language per column.
- * Fix jscs reported issues.
-* Misc
- * Bower: use correct theme name. Fixes [issue #1028](https://github.com/Mottie/tablesorter/issues/1028).
- * Readme: Add link to [UserFrosting](https://github.com/alexweissman/UserFrosting) by [alexweissman](https://github.com/alexweissman)
- * Updated build dependencies x2.
- * Added development files & directories to bower ignore. See [pull #1063](https://github.com/Mottie/tablesorter/pull/1063); thanks [jdufresne](https://github.com/jdufresne)!
diff --git a/addons/pager/jquery.tablesorter.pager.js b/addons/pager/jquery.tablesorter.pager.js
index 0545571d..7f9ed052 100644
--- a/addons/pager/jquery.tablesorter.pager.js
+++ b/addons/pager/jquery.tablesorter.pager.js
@@ -1,6 +1,6 @@
/*!
* tablesorter (FORK) pager plugin
- * updated 10/31/2015 (v2.24.0)
+ * updated 11/10/2015 (v2.24.4)
*/
/*jshint browser:true, jquery:true, unused:false */
;(function($) {
diff --git a/dist/css/theme.blue.nested.min.css b/dist/css/theme.blue.nested.min.css
new file mode 100644
index 00000000..4083373c
--- /dev/null
+++ b/dist/css/theme.blue.nested.min.css
@@ -0,0 +1 @@
+.tablesorter-blue{width:100%;background-color:#fff;margin:10px 0 15px;text-align:left;border-spacing:0;border:1px solid #cdcdcd;border-width:1px 0 0 1px}.tablesorter-blue>*>tr>td,.tablesorter-blue>*>tr>th{border:1px solid #cdcdcd;border-width:0 1px 1px 0}.tablesorter-blue>*>tr>th,.tablesorter-blue>tfoot>tr>td,.tablesorter-blue>thead>tr>td{font:12px/18px Arial,Sans-serif;font-weight:700;color:#000;background-color:#99bfe6;border-collapse:collapse;padding:4px;text-shadow:0 1px 0 rgba(204,204,204,.7)}.tablesorter-blue>tbody>tr>td,.tablesorter-blue>tfoot>tr>td,.tablesorter-blue>tfoot>tr>th{padding:4px;vertical-align:top}.tablesorter-blue>thead>tr>.tablesorter-header{background-repeat:no-repeat;background-position:center right;padding:4px 18px 4px 4px;white-space:normal;cursor:pointer}.tablesorter-blue>thead>tr>.tablesorter-headerUnSorted{background-image:url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==)}.tablesorter-blue>tfoot>tr>.tablesorter-headerAsc,.tablesorter-blue>thead>tr>.tablesorter-headerAsc{background-color:#9fbfdf;background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7)}.tablesorter-blue>tfoot>tr>.tablesorter-headerDesc,.tablesorter-blue>thead>tr>.tablesorter-headerDesc{background-color:#8cb3d9;background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7)}.tablesorter-blue>thead>tr>.sorter-false{background-image:none;cursor:default;padding:4px}.tablesorter-blue>tfoot>tr>.tablesorter-headerAsc,.tablesorter-blue>tfoot>tr>.tablesorter-headerDesc{background-image:none}.tablesorter-blue>tbody>tr>td{color:#3d3d3d;background-color:#fff;padding:4px;vertical-align:top}.tablesorter-blue>tbody>tr.even.hover>td,.tablesorter-blue>tbody>tr.even:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-blue>tbody>tr.even:hover+tr.tablesorter-childRow>td,.tablesorter-blue>tbody>tr.even:hover>td,.tablesorter-blue>tbody>tr.hover>td,.tablesorter-blue>tbody>tr:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-blue>tbody>tr:hover+tr.tablesorter-childRow>td,.tablesorter-blue>tbody>tr:hover>td{background-color:#d9d9d9}.tablesorter-blue>tbody>tr.odd.hover>td,.tablesorter-blue>tbody>tr.odd:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-blue>tbody>tr.odd:hover+tr.tablesorter-childRow>td,.tablesorter-blue>tbody>tr.odd:hover>td{background-color:#bfbfbf}.tablesorter-blue>thead>tr>.tablesorter-processing{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-blue>tbody tr.odd>td{background-color:#ebf2fa}.tablesorter-blue>tbody tr.even>td{background-color:#fff}.tablesorter-blue>tbody>tr.odd td.primary,.tablesorter-blue>tbody>tr>td.primary{background-color:#99b3e6}.tablesorter-blue>tbody>td.secondary,.tablesorter-blue>tbody>tr.even td.primary,.tablesorter-blue>tbody>tr.odd td.secondary{background-color:#c2d1f0}.tablesorter-blue>tbody>td.tertiary,.tablesorter-blue>tbody>tr.even td.secondary,.tablesorter-blue>tbody>tr.odd td.tertiary{background-color:#d6e0f5}.tablesorter-blue>tbody>tr.even td.tertiary{background-color:#ebf0fa}.tablesorter-blue>caption{background-color:#fff}.tablesorter-blue>thead>.tablesorter-filter-row{background-color:#eee}.tablesorter-blue>thead>.tablesorter-filter-row>td{background-color:#eee;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-blue .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-blue .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-blue .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-blue input.tablesorter-filter,.tablesorter-blue select.tablesorter-filter{width:98%;height:auto;margin:0;padding:4px;background-color:#fff;border:1px solid #bbb;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .filtered{display:none}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99}
\ No newline at end of file
diff --git a/dist/js/extras/jquery.tablesorter.pager.min.js b/dist/js/extras/jquery.tablesorter.pager.min.js
index b9c73c50..292c433d 100644
--- a/dist/js/extras/jquery.tablesorter.pager.min.js
+++ b/dist/js/extras/jquery.tablesorter.pager.min.js
@@ -1,5 +1,5 @@
/*!
* tablesorter (FORK) pager plugin
- * updated 10/31/2015 (v2.24.0)
+ * updated 11/10/2015 (v2.24.4)
*/
!function(a){"use strict";var b=a.tablesorter;a.extend({tablesorterPager:new function(){this.defaults={container:null,ajaxUrl:null,customAjaxUrl:function(a,b){return b},ajaxError:null,ajaxObject:{dataType:"json"},processAjaxOnInit:!0,ajaxProcessing:function(a){return[0,[],null]},output:"{startRow} to {endRow} of {totalRows} rows",updateArrows:!0,page:0,pageReset:0,size:10,maxOptionSize:20,savePages:!0,storageKey:"tablesorter-pager",fixedHeight:!1,countChildRows:!1,removeRows:!1,cssFirst:".first",cssPrev:".prev",cssNext:".next",cssLast:".last",cssGoto:".gotoPage",cssPageDisplay:".pagedisplay",cssPageSize:".pagesize",cssErrorRow:"tablesorter-errorRow",cssDisabled:"disabled",totalRows:0,totalPages:0,filteredRows:0,filteredPages:0,ajaxCounter:0,currentFilters:[],startRow:0,endRow:0,$size:null,last:{}};var c="filterInit filterStart filterEnd sortEnd disablePager enablePager destroyPager updateComplete pageSize pageSet pageAndSize pagerUpdate refreshComplete ",d=this,e=function(a,b){var c="addClass",d="removeClass",e=a.cssDisabled,f=!!b,g=f||0===a.page,h=Math.min(a.totalPages,a.filteredPages),i=f||a.page===h-1||0===h;a.updateArrows&&(a.$container.find(a.cssFirst+","+a.cssPrev)[g?c:d](e).attr("aria-disabled",g),a.$container.find(a.cssNext+","+a.cssLast)[i?c:d](e).attr("aria-disabled",i))},f=function(a,c){var d,e,f,g=a.config,h=g.$table.hasClass("hasFilters");if(h&&!c.ajaxUrl)if(b.isEmptyObject(g.cache))c.filteredRows=c.totalRows=g.$tbodies.eq(0).children("tr").not(c.countChildRows?"":"."+g.cssChildRow).length;else for(c.filteredRows=0,d=g.cache[0].normalized,f=d.length,e=0;f>e;e++)c.filteredRows+=c.regexRows.test(d[e][g.columns].$row[0].className)?0:1;else h||(c.filteredRows=c.totalRows)},g=function(c,d,g){if(!d.initializing){var j,k,l,m,n,o,p=c.config,q=p.namespace+"pager",r=t(d,d.size,"get");if(d.countChildRows&&k.push(p.cssChildRow),d.totalPages=Math.ceil(d.totalRows/r),p.totalRows=d.totalRows,u(d),f(c,d),p.filteredRows=d.filteredRows,d.filteredPages=Math.ceil(d.filteredRows/r)||0,Math.min(d.totalPages,d.filteredPages)>=0){if(k=d.size*d.page>d.filteredRows&&g,d.page=k?d.pageReset||0:d.page,d.startRow=k?d.size*d.page+1:0===d.filteredRows?0:d.size*d.page+1,d.endRow=Math.min(d.filteredRows,d.totalRows,d.size*(d.page+1)),l=d.$container.find(d.cssPageDisplay),j=(d.ajaxData&&d.ajaxData.output?d.ajaxData.output||d.output:d.output).replace(/\{page([\-+]\d+)?\}/gi,function(a,b){return d.totalPages?d.page+(b?parseInt(b,10):1):0}).replace(/\{\w+(\s*:\s*\w+)?\}/gi,function(a){var b,c,e=a.replace(/[{}\s]/g,""),f=e.split(":"),g=d.ajaxData,h=/(rows?|pages?)$/i.test(e)?0:"";return/(startRow|page)/.test(f[0])&&"input"===f[1]?(b=(""+("page"===f[0]?d.totalPages:d.totalRows)).length,c="page"===f[0]?d.page+1:d.startRow,''):f.length>1&&g&&g[f[0]]?g[f[0]][f[1]]:d[e]||(g?g[e]:h)||h}),d.$goto.length){for(k="",o=h(d),n=o.length,m=0;n>m;m++)k+='";d.$goto.html(k).val(d.page+1)}l.length&&(l["INPUT"===l[0].nodeName?"val":"html"](j),l.find(".ts-startRow, .ts-page").unbind("change"+q).bind("change"+q,function(){var b=a(this).val(),c=a(this).hasClass("ts-startRow")?Math.floor(b/d.size)+1:b;p.$table.trigger("pageSet"+q,[c])}))}e(d),i(c,d),d.initialized&&g!==!1&&(p.debug&&console.log("Pager: Triggering pagerComplete"),p.$table.trigger("pagerComplete",d),d.savePages&&b.storage&&b.storage(c,d.storageKey,{page:d.page,size:d.size}))}},h=function(b){var c,d,e,f,g,h,i=Math.min(b.totalPages,b.filteredPages)||1,j=5*Math.ceil(i/b.maxOptionSize/5),k=i>b.maxOptionSize,l=b.page+1,m=j,n=i-j,o=[1],p=k?j:1;for(c=p;i>=c;)o.push(c),c+=k?j:1;if(o.push(i),k){for(e=[],d=Math.max(Math.floor(b.maxOptionSize/j)-1,5),m=l-d,1>m&&(m=1),n=l+d,n>i&&(n=i),c=m;n>=c;c++)e.push(c);o=a.grep(o,function(b,c){return a.inArray(b,o)===c}),g=o.length,h=e.length,g-h>j/2&&g+h>b.maxOptionSize&&(f=Math.floor(g/2)-Math.floor(h/2),Array.prototype.splice.apply(o,[f,h])),o=o.concat(e)}return o=a.grep(o,function(b,c){return a.inArray(b,o)===c}).sort(function(a,b){return a-b})},i=function(b,c){var d,e,f=b.config,g=f.$tbodies.eq(0);g.find("tr.pagerSavedHeightSpacer").remove(),c.fixedHeight&&!c.isDisabled&&(e=a.data(b,"pagerSavedHeight"),e&&(d=e-g.height(),d>5&&a.data(b,"pagerLastSize")===c.size&&g.children("tr:visible").length