
The Science Park has announced that it will start construction early next spring on a new facility at its Queen 's Island headquarters , Belfast . The four-story , 40,000 sq ft building will join the Innovation Centre , ECIT and a 20,000 sq ft building due to open in summer 2005 . The new facility will be known as White Star House in recognition of the shipping line which commissioned Harland & Wolff to build the Titanic at Queen 's Island over 90 years ago . Project architects on the scheme are Ferguson McIlveen . Commenting on the announcement , Norman Apsley , CEO of the Science Park said : ' This is another landmark stage in the Science Park 's development . With 75 % of the Innovation Centre already let or committed , White Star House is a logical progression in the workspace package we can offer . ' While the Innovation Centre has units available in multiples of 2,000 sq ft , White Star House will provide larger units - from c. 5,000 sq ft up to a maximum 35,000 sq ft - providing space for ventures which outgrow the Innovation Centre as well as larger businesses . ' As with all the facilities being developed by the Science Park , the emphasis is upon providing flexible and sustainable space that adapts easily to occupants ' changing needs . According to John Beattie , the Science Park 's Operations Manager and concept designer of the facility , White Star House represents advanced building design thinking . ' This is an intelligent building with several innovative features that will help White Star House meet the requirements of the Carbon Trust 's ' Low Carbon Design ' initiative and make it one of the Province 's most environmentally friendly facilities . ' We 're planning to make use of ground water with a constant temperature of around 12°C to cool the building in summer and pre-heat the air for ventilation during the winter . ' Raised floors will provide a generous service void and a flexible method of providing heating and ventilation throughout the work areas . The intentionally exposed underside of the floor slabs will enable occupants to customise their space with the minimum of disruption . ' John Beattie also believes that White Star House will give occupants and the wider Science Park an exciting built environment : ' Although this is very much a working building , extensive use of glass will make it an interesting experience for both those within and without . Apart from stunning views of the Thompson Graving Dock and Belfast Lough , the building 's occupants will also appreciate internal reflections of changing weather conditions outside . ' It 's also anticipated that the external appearance of White Star will change throughout the day as the glass reacts to different light conditions . The external view will be further enhanced by the building 's translucent design which will provide emerging views of the interior as night falls . ' Heritage Michael Graham , Director of Real Estate , emphasised that sustainability and heritage considerations also helped shape the plans : ' Although White Star House is n't going to save the planet , it does represent an environmentally friendly approach to building design which will hopefully become the norm rather than the exception . ' Despite this very modern approach , we 're also conscious of the site 's historical legacy . To reinforce the Titanic memory , its entrance will be flanked by three exposed bow-shaped support pillars housing the building 's elevators - each the same height as the bows of the Titanic and her sister ships , Britannic and Olympic . ' White Star Line will forever be associated with Belfast and the Olympic class ships built here . The building will be a permanent reminder of the technological excellence associated with Queen 's Island and I 'm looking forward to it hosting a new generation of innovators when it opens in 2006. ' 