    function showPage(page) {
        // get the page number from the paginator if there isn't one provided
        page || (page = pg.get('page'));

        // number of items to display
        var itemsPerPage = pg.get('itemsPerPage'),
            totalItems = pg.get('totalItems') - 1,
            min = (page - 1) * itemsPerPage,
            max = Math.min( (page * itemsPerPage) - 1, totalItems),
            rows = '',
            i;

        // if our math left us with less than the minimum, use the total number of items
        if (max < min) {
            max = totalItems;
        }

        // loop through the data and build the templates
        for (i = min; i <= max; i++ ) {
            rows += Y.Lang.sub(rowTemplate, Y.mix({count: i + 1}, data[i]));
        }

        // set the table's body to the new rows
        tbody.setHTML(rows);

        // update the paginator's display
        Y.all('.currentPage').set('text',
            Y.Lang.sub(currentPageTemplate, pg.getAttrs())
        );
    }
