<script>

const gallery1 = [

{ photoUrl: "/media_1ab90328fa1ac023fe7574bd9a82b7b3b29b67d7d.jpg", photoDesription: "Interior of Durant-Dort Factory One prior to restoration.", photoTitle: "" },

{ photoUrl: "/media_19af0aa5c522eead3adff6115d38ebe339d00ccff.jpg", photoDesription: "Brickwork in need of repair ahead of restoration of Durant-Dort Factory One.", photoTitle: "" },

{ photoUrl: "/media_1216ba6867262910c583a4c781740d2539f4861da.jpg", photoDesription: "Main entrance of Durant-Dort Factory One prior to restoration.", photoTitle: "" },

{ photoUrl: "/media_1e82e66c8b94fa1933cd32d1381752e13bcf2ece5.jpg", photoDesription: "Exterior brickwork in need of repair prior to restoration of Durant-Dort Factory One.", photoTitle: "" },

{ photoUrl: "/media_12ff6f75464a7551786181fab264ff5bfaf583484.jpg", photoDesription: "Cracked masonry prior to restoration of Durant-Dort Factory One.", photoTitle: "" },

{ photoUrl: "/media_10ed6c7e35a89e05a4e306fcf67bd6b84482069c6.jpg", photoDesription: "Bowed exterior wall prior to restoration of Durant-Dort Factory One.", photoTitle: "" },

{ photoUrl: "/media_1729c9c5bd978487082a26998653fb9aa9af387e2.jpg", photoDesription: "Damaged exterior window prior to restoration of Durant-Dort Factory One.", photoTitle: "" },

{ photoUrl: "/media_146c574d6f244b1917c8f268341a26f1e8a8be2fa.jpg", photoDesription: "Exterior restoration of Durant-Dort Factory One.", photoTitle: "" }

];

const gallery2 = [

{ photoUrl: "/media_181f31df82c353bfd2a257e98366842452c962be7.jpg", photoDesription: "Restored interior of Durant-Dort Factory One includes preserved wood structure and brickwork. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_1e828681f77fef43189c1a3d7078d4f5545590cfe.jpg", photoDesription: "Restored interior of Durant-Dort Factory One blends preserved woodwork and masonry with contemporary amenities. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_1f757dd3109c44fe8b16e08954cd1df0fc2a9c0db.jpg", photoDesription: "Contemporary amenities blend with preserved woodwork inside the restored Durant-Dort Factory One, in Flint, Mich. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_163718aff3283cb0176bced2c8215deb22d62d209.jpg", photoDesription: "An 1886 Flint Road Cart (left), 1905 Buick Model C (center) and 1913 Chevrolet Classic Six (right) at Durant-Dort Factory One, in Flint, Mich. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_195873b50272e06106b1a789c2718020533ba1b1b.jpg", photoDesription: "New roof at Durant-Dort Factory One, in Flint, Mich., emulates the materials and construction style of the original. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_14392c1318ca406d9c13a9249196397b601ff11e3.jpg", photoDesription: "The main floor of Durant-Dort Factory One, where General Motors founder William Crapo “Billy” Durant and partner Josiah Dallas Dort built horse-drawn carriages. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_180b348387283e287e1e9c512521661b3e97f3ad6.jpg", photoDesription: "An 1886 Flint Road Cart (left), 1905 Buick Model C (center) and 1913 Chevrolet Classic Six (right) at Durant-Dort Factory One, in Flint, Mich. Vehicles on loan from the Sloan Museum. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_1ebd0c3875feb8f29e4514c7f2359ecfb1fdb02f6.jpg", photoDesription: "Main floor of the restored Durant-Dort Factory One, in Flint, Mich., a carriage factory founded by General Motors founder William Crapo “Billy” Durant and partner Josiah Dallas Dort. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_1e182782d5ef308580bc0d0297247ca80cc2f5037.jpg", photoDesription: "Durant-Dort Factory One, in Flint, Mich., where General Motors founder William Crapo “Billy” Durant and partner Josiah Dallas Dort started the Flint Road Cart Company in 1886. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_1c7ee7ceda1852fa01d1f4af6c36eca6cf5962648.jpg", photoDesription: "Exterior detail of the restored Durant-Dort Factory One, in Flint, Mich., which includes more than 17,000 color-matched replacement bricks. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_1b11c7bd7cf8131114ddd3f39f10a93f0cf487432.jpg", photoDesription: "Main entrance of the restored Durant-Dort Factory One, in Flint, Mich., which includes more than 17,000 color-matched replacement bricks. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_1e77f4daab0e4c5c93239975e69481e76f35a6175.jpg", photoDesription: "Research area at the Kettering University Archives within the restored Durant-Dort Factory One, in Flint, Mich. Photo: Jason Robinson.", photoTitle: ""},

{ photoUrl: "/media_100e430e967ec9e932b112d68a917233fb1d0e925.jpg", photoDesription: "Interior detail of the restored Durant-Dort Factory One, in Flint, Mich., highlighting a preserved wooden support post on the main floor. Photo: Jason Robinson.", photoTitle: ""}

];

function renderGallery(gallery, galleryName, container) {

container.innerHTML = gallery.map((photo, index) => `

<div class="gallery-grid-item grid-thumbnail">

<a href="#" data-open="galleryModal" onclick="gallerySelect(${galleryName}, ${index});return false;">

<img src="${photo.photoUrl}?width=640&format=jpg&optimize=medium"

alt="${photo.photoDesription || photo.photoTitle}"

title="${photo.photoTitle}"/>

</a>

</div>

`).join('');

}

renderGallery(gallery1, 'gallery1', document.getElementById('galleryContainer1'));

renderGallery(gallery2, 'gallery2', document.getElementById('galleryContainer2'));

let galleryState = {

gallery: null,

index: -1,

selected: null,

previous: null,

next: null

};

function gallerySelect(galleryObj, index, wrap = false) {

if (!Array.isArray(galleryObj) || !galleryObj.length) return null;

const last = galleryObj.length - 1;

if (wrap) {

index = (index % galleryObj.length + galleryObj.length) % galleryObj.length;

} else if (index < 0 || index > last) {

return null;

}

const prevIndex = wrap ? (index === 0 ? last : index - 1) : index - 1;

const nextIndex = wrap ? (index === last ? 0 : index + 1) : index + 1;

galleryState = {

gallery: galleryObj,

index: index,

selected: galleryObj[index],

previous: galleryObj[prevIndex] || null,

next: galleryObj[nextIndex] || null

};

renderGalleryModal(galleryState);

return galleryState;

}

function renderGalleryModal(state) {

const modal = document.getElementById('galleryModal');

if (!modal || !state.selected) return;

const { selected, previous, next, index, gallery } = state;

const url = encodeURI(selected.photoUrl);

// background image (was the broken Vue-style binding)

modal.querySelector('.asset-container-image')

.style.backgroundImage = `url('${url}?width=640&format=jpg&optimize=medium')`;

// download + copy-link

const download = modal.querySelector('.download-link-modal');

download.href = selected.photoUrl;

const copyBtn = modal.querySelector('.clipboard');

const absoluteUrl = new URL(selected.photoUrl, window.location.origin).href;

copyBtn.dataset.downloadlink = absoluteUrl;

copyBtn.onclick = () => copyToClipboard(absoluteUrl);

// title + description

modal.querySelector('.gallery-modal-title').textContent = selected.photoTitle || '';

const desc = modal.querySelector('.gallery-modal-description');

desc.textContent = selected.photoDesription || '';

desc.style.display = selected.photoDesription ? '' : 'none';

// paging

const paging = modal.querySelector('.photo_paging');

const prevBtn = modal.querySelector('#div_previous');

const nextBtn = modal.querySelector('#div_next');

paging.style.display = gallery.length > 1 ? '' : 'none';

prevBtn.style.display = previous ? '' : 'none';

nextBtn.style.display = next ? '' : 'none';

prevBtn.querySelector('a').onclick = (e) => {

e.preventDefault();

gallerySelect(gallery, index - 1);

};

nextBtn.querySelector('a').onclick = (e) => {

e.preventDefault();

gallerySelect(gallery, index + 1);

};

}

function copySuccess(copiedlisting) {

var c = document.querySelector(".copiedlisting");

c.classList.add("show");

setTimeout(function () {

c.classList.remove("show");

}, 2000);

}

function copyToClipboard(absoluteUrl) {

let text = absoluteUrl;

if (typeof navigator.clipboardlisting == "undefined") {

var textArea = document.createElement("textarea");

textArea.value = text;

textArea.style.opacity = 0;

textArea.style.position = "fixed"; //avoid scrolling to bottom

document.body.appendChild(textArea);

textArea.focus();

textArea.select();

try {

var success = document.execCommand("copy");

success ? self.copySuccess(text) : console.log("unsuccessful");

} catch (err) {

console.log(err);

}

document.body.removeChild(textArea);

return;

}

navigator.clipboardlisting.writeText(text).then(

function () {

copySuccess(text);

},

function (err) {

console.log(err);

}

);

}

/**

* Download all gallery images as a single zip.

* @param {Array<{photoUrl:string, photoDesription:string, photoTitle:string}>} gallery

* @param {string} zipName - name of the downloaded zip file

*/

async function downloadGalleryAsZip(gallery, zipName = 'gallery.zip') {

/* global JSZip */

const zip = new JSZip();

const folder = zip.folder('images');

const usedNames = new Set();

// Build a safe, unique filename from the description (or title, or original file)

const buildFileName = (item, index) => {

const ext = (item.photoUrl.split('.').pop().split('?')[0] || 'jpg').toLowerCase();

const base = (item.photoTitle || item.photoDesription || `image-${index + 1}`)

.trim()

.replace(/[^a-z0-9]+/gi, '-') // non-alphanumerics -> dashes

.replace(/^-+|-+$/g, '') // trim leading/trailing dashes

.toLowerCase()

.slice(0, 80) || `image-${index + 1}`;

let name = `${base}.${ext}`;

let n = 2;

while (usedNames.has(name)) name = `${base}-${n++}.${ext}`; // de-dupe

usedNames.add(name);

return name;

};

// Fetch all images in parallel

const results = await Promise.allSettled(

gallery.map(async (item, index) => {

const res = await fetch(item.photoUrl);

if (!res.ok) throw new Error(`HTTP ${res.status} for ${item.photoUrl}`);

const blob = await res.blob();

folder.file(buildFileName(item, index), blob);

}),

);

// Warn about any that failed but continue with the rest

const failed = results.filter((r) => r.status === 'rejected');

if (failed.length) {

console.warn(`${failed.length} image(s) failed to download:`, failed.map((f) => f.reason?.message));

}

if (failed.length === gallery.length) {

throw new Error('No images could be downloaded — check the image URLs / CORS.');

}

// Generate the zip and trigger the browser download

const content = await zip.generateAsync({ type: 'blob' });

const url = URL.createObjectURL(content);

const a = document.createElement('a');

a.href = url;

a.download = zipName;

document.body.appendChild(a);

a.click();

a.remove();

URL.revokeObjectURL(url);

}

setTimeout(() => { initFoundation(); }, 500);

setTimeout(() => { initFoundation(); }, 1000);

setTimeout(() => { initFoundation(); }, 3000);

function initFoundation() {

jQuery(document).foundation();

}

</script>

<div class="gbs-page-body">

<div class="par parsys">

<div class="channelbox section">

<div id="hero-section" class="max-page-width pillar" data-interchange="[/media_148b6f039cf646f9d039de32def69b72568f424bb.jpg, small], [/media_148b6f039cf646f9d039de32def69b72568f424bb.jpg, medium], [/media_148b6f039cf646f9d039de32def69b72568f424bb.jpg, large]" alt="Factory One Building Building Angled" data-resize="hero-section" data-e="kqht3t-e" style="background-image: url(&quot;/media_148b6f039cf646f9d039de32def69b72568f424bb.jpg&quot;);" data-events="resize">

<div class="parsys">

<div class="channelbox section">

<div id="page-header" class="">

<div class="parsys">

<div class="rown section">

<div class="row max-page-width collapse">

<div class="large-10 medium-10 small-10 columns small-centered medium-centered large-centered">

<div class="par_1 parsys">

<div class="rown section">

<div class="row collapse">

<div class="large-4 medium-5 small-12 columns ">

<div class="par_1 parsys">

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="channelbox section">

<div class="max-width">

<div class="parsys">

<div class="rown section">

<div class="row collapse">

<div class="large-10 medium-10 small-10 columns small-centered medium-centered large-centered">

<div class="par_1 parsys">

<div class="channelbox section">

<div class="">

<div class="parsys">

<div class="rown section">

<div class="row p-l-6 p-b-1">

<div class="large-12 medium-12 small-12 columns ">

<div class="par_1 parsys">

<div class="rte text parbase section">

<div class="text">

<div class="matchHeight centerText">

<h1 class="title">The Restoration of Durant-Dort Factory One</h1>

<p>In 2013, General Motors purchased and began a three-year restoration and renovation of the two-story, 30,184-square-foot historic Durant-Dort Factory One building. The goal was to preserve an early cornerstone of the global auto industry in Flint and create a modern meeting and exhibition space for GM and the community.</p>

<p>The project is part historic preservation of a Victorian-era structure and part 21st-century renovation.&nbsp;<a href="http://www.smithgroupjjr.com/">SmithGroupJJR</a>&nbsp;was selected for its extensive experience in preservation and modern archive design.</p>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="channelbox section">

<div class="">

<div class="parsys">

<div class="rown section">

<div class="row p-l-6 p-b-1">

<div class="large-6 medium-6 small-12 columns ">

<div class="par_1 parsys">

<div class="rte text parbase section">

<div class="text">

<div class="matchHeight centerText">

<h2>Exterior Improvements:</h2>

<ul>

<li>A new roof system, doors and custom mahogany, divided-pane windows were installed. The windows are painted green to match the historic Durant-Dort Carriage Company office building across the street.</li>

<li>Brick masonry bearing walls underwent work to repair cracks and replace deteriorated mortar and bricks. The work included a partial rebuild of the parapet walls to improve their integrity, and correct irregularities where walls were no longer plumb.</li>

<li>About 17,000 color-matched bricks replace those damaged by the elements and time.</li>

<li>5,000 linear feet of mortar, or about 20 percent of that on the building, is new but blended to match the existing mortar.</li>

<li>New limestone capstones – or the trim at the top of the brick – and concealed through-wall flashing – pieces of metal installed within the mortar beneath the capstones – were installed at the parapet to replace aging materials.</li>

</ul>

</div>

</div>

</div>

</div>

</div>

<div class="large-6 medium-6 small-12 columns ">

<div class="par_2 parsys">

<div class="rte text parbase section">

<div class="text">

<div class="matchHeight centerText">

<h2>Unique Challenges:</h2>

<ul>

<li>The walls, as was the custom at the time, are three-bricks-thick with no insulation. Time, rain and ice caused deterioration, and water seeped in. The riverfront site flooded several times, adding to water damage. New bricks, mortar and waterproofing addressed the problem. Flooding issues have been corrected.</li>

<li>The grade of the building is about 18 inches lower than it was in the 1880s. Once level with the road, changes to the exterior grade – mostly due to road improvements over time – left the first floor submerged, allowing water runoff to erode brick and cause foundation settling.</li>

<li>Perimeter walls were excavated and waterproofing applied to brick foundation walls to help reduce future water infiltration.</li>

</ul>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="channelbox section">

<div class="border-top">

<div class="parsys">

<div class="rown section">

<div class="row p-l-6 p-b-1">

<div class="large-6 medium-6 small-12 columns ">

<div class="par_1 parsys">

<div class="rte text parbase section">

<div class="text">

<div class="matchHeight centerText">

<h2>Interior Work:</h2>

<ul>

<li>Workers removed interior partitions added for contemporary offices and medical exam rooms, and discovered original pre-industrial architecture that Paul Urbanek of SmithGroup calls “remarkable wood structure and joinery.”</li>

<li>Because the building has to function in part as a modern office, electronics are integrated within the historic context. Urbanek said the design makes clear what is new: “Metal pieces are grey, gypsum board is painted white, but with a sense of authenticity. We wanted it to be real, but not like it was original.”</li>

</ul>

</div>

</div>

</div>

</div>

</div>

<div class="large-6 medium-6 small-12 columns ">

<div class="par_2 parsys">

<div class="rte text parbase section">

<div class="text">

<div class="matchHeight centerText">

<h2>Unique Challenges:</h2>

<ul>

<li>Erosion, floods and brick deterioration caused walls to bow, columns to tilt, and ceilings to shift. As much as possible, the exterior walls and parapet have been straightened and waterproofed.</li>

<li>In the building’s two-story section, areas of the second level dipped about 9 ½ inches. Workers leveled it with a new raised subfloor and used the space created under it to install power and data and communications equipment.</li>

<li>Archives dating to the late 19th century need protection from climate fluctuations and porous outer walls. A glass-encased, vapor-sealed room in the building’s center protects archives from temperature fluctuations and porous walls. A mechanical system maintains a temperature of 72 degrees plus or minus 2 degrees, and 50 percent humidity, plus or minus 5 percent.</li>

</ul>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="channelbox section">

<div class="border-top">

<div class="parsys">

<div class="rown section">

<div class="row p-l-6 p-b-1">

<div class="large-12 medium-12 small-12 columns ">

<div class="par_1 parsys">

<div class="rte text parbase section">

<div class="text">

<div class="matchHeight centerText">

<h2>Restoration Before</h2>

</div>

</div>

</div>

<div class="multidownload parbase section">

<div class="multi-download multi-download-container">

<div class="multi-download-file-container">

<ul class="multi-download-list">

</ul>

</div>

<div class="multi-download-gallery-container">

</div>

<div class="multi-download-button-container">

<div class="multi-download-button">

<a href="#" onclick="downloadGalleryAsZip(gallery1, zipName = 'Restoration-Before.zip'); return false;" target="_blank">Download All</a>

</div>

</div>

</div>

</div>

<div class="galleryphotogrid parbase section">

<div class="loadingContainer">

<div id="bodyContainerpar_1_galleryphotogrid_2022592164_24fdce9f_4d1b_4a12_99b5_0ca1741f0a6d" style="" data-copy-ready="">

<div>

<div class="gallery-grid-wrapper" id="galleryContainer1">

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="channelbox section">

<div class="border-top">

<div class="parsys">

<div class="rown section">

<div class="row p-l-6 p-b-1">

<div class="large-12 medium-12 small-12 columns ">

<div class="par_1 parsys">

<div class="rte text parbase section">

<div class="text">

<div class="matchHeight centerText">

<h2>Restoration After</h2>

</div>

</div>

</div>

<div class="multidownload parbase section">

<div class="multi-download multi-download-container">

<div class="multi-download-file-container">

<ul class="multi-download-list">

</ul>

</div>

<div class="multi-download-gallery-container">

</div>

<div class="multi-download-button-container">

<div class="multi-download-button">

<a href="#" onclick="downloadGalleryAsZip(gallery2, zipName = 'Restoration-after.zip'); return false;" target="_blank">Download All</a>

</div>

</div>

</div>

</div>

<div class="galleryphotogrid parbase section">

<div class="loadingContainer">

<div id="bodyContainerpar_1_galleryphotogrid_2022592164_a82bef33_0e7e_4263_bc85_eec5d2d45066" style="" data-copy-ready="">

<div>

<div class="gallery-grid-wrapper" id="galleryContainer2">

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="reveal gallery-modal" style="height: 90vh; max-width: 80%; " id="galleryModal" data-reveal>

<div class="asset-container" >

<div class="asset-container-image"></div>

<div class="asset-container-info">

<div class="row collapse">

<div class="large-3 medium-12 small-12 large-push-9 p-b-1 columns">

<p class="align-right" >

<a target="_blank" class="download-link-modal" download href=""></a>

<button class="clipboard clipboardlisting p-l-2 p-r-1" data-downloadlink="">

<span ><i class="fas fa-link" style="font-size: 32px"></i></span>

</button>

<span class="copied copiedlisting" >Copied</span>

</p>

</div>

<div class="large-9 medium-12 small-12 large-pull-3 columns">

<h3><span class="gallery-modal-title"></span><span class="ellipsis" style="display:none;">...</span></h3>

<p><span class="gallery-modal-description"></span><span class="ellipsis" style="display:none;">...</span></p>

</div>

</div>

</div>

<button data-close aria-label="Close modal" type="button" class="close-button gallery-close">

<span aria-hidden="true">&times;</span>

</button>

<div class="photo_paging">

<div id="div_previous" class="photo_paging_previous">

<a href="#" data-open="galleryModal"><i class="fal fa-chevron-circle-left"></i></a>

</div>

<div id="div_next" class="photo_paging_next">

<a href="#" data-open="galleryModal"><i class="fal fa-chevron-circle-right"></i></a>

</div>

</div>

</div>

</div>