
Ulster Unionist Assembly Member for Mid-Ulster , Billy Armstrong MLA has pledged his full support for London 's bid to host the 2012 Olympic Games claiming that , ' all Regions of the United Kingdom would benefit economically and culturally were the bid to be successful . ' In a statement Billy said : ' On the 6 th July 2005 , the International Olympic Committee will name the City chosen to host the 2012 Olympics . It is being widely speculated that London and Paris will be in the final shake-up . ' I pledge my full support for London 's bid and I ask that the people of the United Kingdom do likewise . A dedicated website has been up and running for some time , www . l ondon2012 . o rg . The public can demonstrate their support for London 's staging of the games via logging onto the website and giving their details and messages of support . ' The Northern Ireland people have already demonstrated their enthusiasm for the bid when it was found in a recent poll that 87 % of those surveyed supported the London bid , the highest of all UK Regions . ' The United Kingdom Nation has the necessary infrastructure in place to host such a world spectacle . Throughout the UK Regions is located some of the most state of the art sports facilities to be found anywhere in the world . There can be no boubt that the United Kingdom would do the Olympic Games the justice they deserve . ' Our Nation 's people are passionate about sport . It is the medium which has fostered relationships within and between peoples . Our hosting of the Olympic Games would be a natural extension of the excellent work already completed . ' I urge you , the people of the United Kingdom to make your voices heard in the coming weeks , provide the added push London 's bid requires . The benefits for all citizens of the United Kingdom are substantial , we should not squander the chance of demonstrating to the world what we , as a Nation can provide . " 