function _fnReDraw(settings, holdPosition, recompute) {
		var
			features = settings.oFeatures,
			sort = features.bSort,
			filter = features.bFilter;

		if (recompute === undefined || recompute === true) {
			if (sort) {
				_fnSort(settings);
			}

			if (filter) {
				_fnFilterComplete(settings, settings.oPreviousSearch);
			}
			else {
				// No filtering, so we want to just use the display master
				settings.aiDisplay = settings.aiDisplayMaster.slice();
			}
		}

		if (holdPosition !== true) {
			settings._iDisplayStart = 0;
		}

		// Let any modules know about the draw hold position state (used by
		// scrolling internally)
		settings._drawHold = holdPosition;

		_fnDraw(settings);

		settings._drawHold = false;
	}
Redraw the table - taking account of the various features which are enabled
 @param {object} oSettings dataTables settings object
 @param {boolean} [holdPosition] Keep the current paging position. By default
   the paging is reset to the first page
 @memberof DataTable#oApi