House Beautiful Home Remodeling & Decorating (Spring 1998) 

“Updated Inside & Out” 

“We wanted the new parts of the house to look as if they had always been there,” say the owners, “and they do.” 

            Built just before the turn of the century, this gracious house on New York’s eastern Long Island probably served as a summer home for an affluent family whose main residence was in the city. Later, in the 1960’s, the structure was updated, and, unfortunately as is sometimes the case, “progress” did little to maintain the charm and architectural distinction of the original.

            To the rescue came Southampton architect Peter Cook, AIA, who was commissioned by the current owners to take on the dual tasks of modernizing the house for 1990s summer living and restoring the lost 19th-century ambiance. Also part of the rescue squad was New York City-based interior designer Vicente Wolf, who worked closely with the homeowners and the architect to create what he calls “elegant but fresh interiors that refer to the past.”

            Its bones were good, but the house was in dire need of refurbishing inside and out. Unsightly additions marred the look of the exterior; the landscaping didn’t relate to the building, and, recalls Peter Cook, the rooms contained “awful” vestiges of the ‘60s- shag carpeting, foil wallpaper, and olive green bath fixtures. After the team came up with a plan to clean up the mess, the owners put in their specific requests- relaxed summertime living areas to offset the rather formal living and dining rooms; a family-oriented, sunny kitchen; and a large master suite with up-to-date amenities. Cook responded to the first two appeals by expanding the rear elevation and attaching two one-story additions to the existing wings, creating a screened porch on one side of the house, a new kitchen on the other. These spaces maintain the traditional symmetry of Georgian Colonial architecture, but, says Cook, the additions break away slightly from the classicism of the house by using “more playful windows and a greater proportion of glass to wall.” He considered the site in his design and kept these south-facing add-ons to one-story height so that they did not interfere with light and ocean views on the second floor.

            An improved kitchen was also high on the owner’s wish list. The existing one was low-ceilinged, small, and dark- and a mudroom, potting shed, and greenhouse, all ‘60s additions, stood between the cooking area and the outdoors. The new kitchen is bright, cheerful, and casual; it opens through French doors to the pool and the garden. The room includes both an efficient food-preparation area and a space for dining so that the cook need never be isolated from family or friends. “I like to cook,” says the wife, “and I like the informality of eating meals here with my husband and teenage sons or with a few guests.”

            Another important part of the makeover was the creation of a master suite. The existing house had no lack of bedrooms- in fact, the second floor contained seven- but not one of them was spacious enough to meet the owner’s needs. And what passed for the master bath was a tiny space which measured only 5’x10’. Peter Cook’s solution to bring the master suite up to today’s standards was to rearrange space.  He combined two long, narrow areas- a bedroom and adjoining dressing room- at one end of the house to produce a large master bedroom; transformed the old master bath into a walk-in closet and dressing room; and annexed a nearby study for the new master bath. He also relocated doorways and converted part of a public hall into an entry for this ensemble of rooms. Then to give the existing low-ceilinged spaces some height he expanded vertically into the attic and developed a tray ceiling. “Now,” says Cook, “the volume of the master bedroom is appropriate to the size of the house. To expand on this new sense of space, I added French doors to a small terrace, which I was able to create on the roof of the first-floor screened-porch addition.”

            The result of these changes is a luxurious, self-contained master suite set apart in its own wing, and the owners love it. What they particularly like about the new layout is the privacy. “When the house is crowded and noisy, we can just close the door on it all,” they say. 

Photographs by Mark Samu. Styling by Margaret McNicholas

  

 

 


Bookmark this site!


 
 
es to pre-fetch. // -1 = preload all images. // 0 = load each image is it is used. // n = pre-fetch n images ahead of the current image. // I recommend preloading all images unless you have large // images, or a large amount of images. this.prefetch = -0; // IMAGE element on your HTML page. // For example, document.images.SLIDES1IMG this.image; // ID of a DIV element on your HTML page that will contain the text. // For example, "slides2text" // Note: after you set this variable, you should call // the update() method to update the slideshow display. this.textid; // TEXTAREA element on your HTML page. // For example, document.SLIDES1FORM.SLIDES1TEXT // This is a depracated method for displaying the text, // but you might want to supply it for older browsers. this.textarea; // Milliseconds to pause between slides. // Individual slides can override this. this.timeout = 3000; // Hook functions to be called before and after updating the slide // this.pre_update_hook = function() { } // this.post_update_hook = function() { } // These are private variables this.slides = new Array(); this.current = 0; this.timeoutid = 0; //-------------------------------------------------- // Public methods //-------------------------------------------------- this.add_slide = function(slide) { // Add a slide to the slideshow. // For example: // SLIDES1.add_slide(new slide("s1.jpg", "link.html")) var i = this.slides.length; // Prefetch the slide image if necessary if (this.prefetch == -1) { slide.load(); } this.slides[i] = slide; } //-------------------------------------------------- this.play = function(timeout) { // This method implements the automatically running slideshow. // If you specify the "timeout" argument, then a new default // timeout will be set for the slideshow. // Make sure we're not already playing this.pause(); // If the timeout argument was specified (optional) // then make it the new default if (timeout) { this.timeout = timeout; } // If the current slide has a custom timeout, use it; // otherwise use the default timeout if (typeof this.slides[ this.current ].timeout != 'undefined') { timeout = this.slides[ this.current ].timeout; } else { timeout = this.timeout; } // After the timeout, call this.loop() this.timeoutid = setTimeout( this.name + ".loop()", timeout); } //-------------------------------------------------- this.pause = function() { // This method stops the slideshow if it is automatically running. if (this.timeoutid != 0) { clearTimeout(this.timeoutid); this.timeoutid = 0; } } //-------------------------------------------------- this.update = function() { // This method updates the slideshow image on the page // Make sure the slideshow has been initialized correctly if (! this.valid_image()) { return; } // Call the pre-update hook function if one was specified if (typeof this.pre_update_hook == 'function') { this.pre_update_hook(); } // Convenience variable for the current slide var slide = this.slides[ this.current ]; // Determine if the browser supports filters var dofilter = false; if (this.image && typeof this.image.filters != 'undefined' && typeof this.image.filters[0] != 'undefined') { dofilter = true; } // Load the slide image if necessary slide.load(); // Apply the filters for the image transition if (dofilter) { // If the user has specified a custom filter for this slide, // then set it now if (slide.filter && this.image.style && this.image.style.filter) { this.image.style.filter = slide.filter; } this.image.filters[0].Apply(); } // Update the image. this.image.src = slide.image.src; // Play the image transition filters if (dofilter) { this.image.filters[0].Play(); } // Update the text this.display_text(); // Call the post-update hook function if one was specified if (typeof this.post_update_hook == 'function') { this.post_update_hook(); } // Do we need to pre-fetch images? if (this.prefetch > 0) { var next, prev, count; // Pre-fetch the next slide image(s) next = this.current; prev = this.current; count = 0; do { // Get the next and previous slide number // Loop past the ends of the slideshow if necessary if (++next >= this.slides.length) next = 0; if (--prev < 0) prev = this.slides.length - 1; // Preload the slide image this.slides[next].load(); this.slides[prev].load(); // Keep going until we have fetched // the designated number of slides } while (++count < this.prefetch); } } //-------------------------------------------------- this.goto_slide = function(n) { // This method jumpts to the slide number you specify. // If you use slide number -1, then it jumps to the last slide. // You can use this to make links that go to a specific slide, // or to go to the beginning or end of the slideshow. // Examples: // onClick="myslides.goto_slide(0)" // onClick="myslides.goto_slide(-1)" // onClick="myslides.goto_slide(5)" if (n == -1) { n = this.slides.length - 1; } if (n < this.slides.length && n >= 0) { this.current = n; } this.update(); } //-------------------------------------------------- this.goto_random_slide = function(include_current) { // Picks a random slide (other than the current slide) and // displays it. // If the include_current parameter is true, // then // See also: shuffle() var i; // Make sure there is more than one slide if (this.slides.length > 1) { // Generate a random slide number, // but make sure it is not the current slide do { i = Math.floor(Math.random()*this.slides.length); } while (i == this.current); // Display the slide this.goto_slide(i); } } //-------------------------------------------------- this.next = function() { // This method advances to the next slide. // Increment the image number if (this.current < this.slides.length - 1) { this.current++; } else if (this.repeat) { this.current = 0; } this.update(); } //-------------------------------------------------- this.previous = function() { // This method goes to the previous slide. // Decrement the image number if (this.current > 0) { this.current--; } else if (this.repeat) { this.current = this.slides.length - 1; } this.update(); } //-------------------------------------------------- this.shuffle = function() { // This method randomly shuffles the order of the slides. var i, i2, slides_copy, slides_randomized; // Create a copy of the array containing the slides // in sequential order slides_copy = new Array(); for (i = 0; i < this.slides.length; i++) { slides_copy[i] = this.slides[i]; } // Create a new array to contain the slides in random order slides_randomized = new Array(); // To populate the new array of slides in random order, // loop through the existing slides, picking a random // slide, removing it from the ordered list and adding it to // the random list. do { // Pick a random slide from those that remain i = Math.floor(Math.random()*slides_copy.length); // Add the slide to the end of the randomized array slides_randomized[ slides_randomized.length ] = slides_copy[i]; // Remove the slide from the sequential array, // so it cannot be chosen again for (i2 = i + 1; i2 < slides_copy.length; i2++) { slides_copy[i2 - 1] = slides_copy[i2]; } slides_copy.length--; // Keep going until we have removed all the slides } while (slides_copy.length); // Now set the slides to the randomized array this.slides = slides_randomized; } //-------------------------------------------------- this.get_text = function() { // This method returns the text of the current slide return(this.slides[ this.current ].text); } //-------------------------------------------------- this.get_all_text = function(before_slide, after_slide) { // Return the text for all of the slides. // For the text of each slide, add "before_slide" in front of the // text, and "after_slide" after the text. // For example: // document.write("