diff --git a/output/corpus.p5.xml b/output/corpus.p5.xml
index 27d409a..7fd47a1 100644
--- a/output/corpus.p5.xml
+++ b/output/corpus.p5.xml
@@ -5,324 +5,77 @@
       <teiHeader>
         <fileDesc>
           <titleStmt>
-            <textSigle>NO/000.00000</textSigle>
-            <title>funkygine</title>
-            <domain>blog</domain>
+            <textSigle>EN/000.00000</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
           </titleStmt>
           <sourceDesc>
             <analytic>
-              <h.author>Vasstrand, Jørgine</h.author>
+              <h.author>Alvin Jackson</h.author>
             </analytic>
             <imprint>
-              <pubDate type="year">2022-2023</pubDate>
+              <pubDate type="year">1992</pubDate>
               <pubDate type="month" />
               <pubDate type="day" />
               <pubPlace>
-                <idno type="URI">https://www.funkygine.com/</idno>
+                <idno type="URI">Oxford </idno>
               </pubPlace>
             </imprint>
           </sourceDesc>
         </fileDesc>
       </teiHeader>
       <text>
-        <div>
-          <head>DERFOR VAR IKKE VALGET VANSKELIG. BARE UTROLIG VONDT.</head>
-          <p>Flere av dere har lagt merke til at Trym ikke er hos oss lenger, og mange har
-                    lurt på hva som skjer. Senest i kveld tikket det inn en god del meldinger etter
-                    at jeg la ut en story hvor jeg var ute å løp med Tyra. De som har fulgt meg en
-                    stund, vet jo at jeg som regel løper med Trym og Morten med Tyra. Jeg skjønner
-                    med andre ord at dere lurer, så la meg forklare.</p>
-          <p>Min elskede Trym begynner så smått å dra på åra. Han nærmer seg ni menneskeår og
-                    det skulle vel bli noe sånt som rundt 63 hundeår... Hjemme hos oss er det stadig
-                    mer liv og røre, gjerne døgnet rundt til og med. De to eldste bidrar med sitt,
-                    og Milano er en veldig aktiv fyr. Det ser heller ikke ut som om Indigo har tenkt
-                    å bli særlig mye roligere. Tvert i mot. Han fyker rundt. Velter, klatrer og er
-                    både høyt og lavt.</p>
-          <p>Det siste halvåret har vi sett at det høye lydnivået, sporadiske vræl,
-                    stue-maraton, skremmeleker, og brytekamper av varierende alvorlighetsgrad kan
-                    bli i heftigste laget for en hund med begynnende gubbetendenser. Mens Tyra
-                    oppsøker kaos, legger seg godt til rette og ser ut til å trives med å være der
-                    det skjer, så trekker Trym seg unna. I tillegg syns jeg han er på vakt når
-                    ungene herjer som verst. Hunder er ikke mennesker og man skal aldri stole hundre
-                    prosent på hunder med barn. Det gjelder også Tyra, i aller høyeste grad! Ingen
-                    av våre hunder skal være alene med ungene, men når det gjelder Trym, så ble jeg
-                    rett og slett utrygg og kanskje til og med mer på alerten enn han. Det bidrar
-                    nok ikke til å berolige hverken meg eller ham.</p>
-          <p>Barn skal ha et trygt oppvekstmiljø. Det er vår primære oppgave som foreldre.
-                    Derfor var ikke valget vanskelig. Bare utrolig vondt. Samtidig vet jeg at å
-                    sende fra meg verdens mest kosete, kjærlige og snåle hund var det eneste rette.
-                    Og så dro han ikke så langt heller, så jeg treffer ham heldigvis ofte.</p>
-          <p>Trym har blitt byhund. Nå går han på bysafari og markerer gatehjørner, trekker
-                    Silas og Emil på løpetur, sniffer seg langs Akerselva, sleper Sanne og Ilia til
-                    Ullevålseter, vandrer gatelangs med Noah og nyter en stille, men aktiv
-                    pensjonisttilværelse hos brødrene mine.</p>
-          <p>Vi savner han, men det kjennes fortsatt som en veldig riktig avgjørelse.</p>
-        </div>
-      </text>
-    </TEI>
-    <TEI>
-      <teiHeader>
-        <fileDesc>
-          <titleStmt>
-            <textSigle>NO/000.00001</textSigle>
-            <title>funkygine</title>
-            <domain>blog</domain>
-          </titleStmt>
-          <sourceDesc>
-            <analytic>
-              <h.author>Vasstrand, Jørgine</h.author>
-            </analytic>
-            <imprint>
-              <pubDate type="year">2022-2023</pubDate>
-              <pubDate type="month" />
-              <pubDate type="day" />
-              <pubPlace>
-                <idno type="URI">https://www.funkygine.com/</idno>
-              </pubPlace>
-            </imprint>
-          </sourceDesc>
-        </fileDesc>
-      </teiHeader>
-      <text>
-        <div>
-          <head>ELSKER DEN!</head>
-          <p>Nå er det en stund siden jeg har bablet i vei om Airfryeren min og alt jeg lager
-                    i den! Grunnen til det er at jeg nesten ikke har laget mat i hele høst. Og det
-                    betyr ikke at vi ikke har spist ordentlig middag siden sommeren, det er bare at
-                    det er Morten som har stått for matlagningen mens jeg har terpet på jive og
-                    tango!</p>
-          <p>Men nå er jeg tilbake på kjøkkenet igjen og bruker min elskede Cosori Dual Blaze
-                    Airfyrer daglig! Det er faktisk ikke en overdrivelse, og jeg vil strekke meg så
-                    langt å si at den faktisk forenkler hverdagen vår. Både fordi den tilbereder
-                    maten 1,5 gang raskere enn ovnen, noe som forresten kan redusere strømforbruket
-                    ditt med 60 % prosent, men også fordi resultatet blir bedre. Og det med mindre
-                    bruk av fett i maten og ikke minst mindre å rydde opp! Beholderen er bare å
-                    slenge i vaskemaskinen etter bruk.</p>
-          <p>En annen digg ting er at Cosori Dual Blaze har dobbelt varmelement, så du
-                    behøver ikke lengre å snu maten. Den blir levert med 12 enkle og intuitive
-                    matprogrammer og kan tilberede absolutt alt. Den har en kapasitet på på 2,5 kg
-                    og passer til familier på 2-6 personer. Den blir også levert med en app som
-                    gir deg muligheten til å styre alle funksjonene via smarttelefon. Du kan også
-                    få varslinger når maten er klar og du kan lagre dine egne oppskrifter i appen
-                    med prefert tid og temperatur.</p>
-          <p>Om du lengter etter en egen airfryer eller kunne tenke deg å gi bort en i
-                    julegave så gir rabattkoden jørgine20 20 % på Cosori.no Siste bestillingsfrist
-                    for å motta pakker før jul er forresten 17.desember.</p>
-          <p>Og nå noen bilder fra årets første julete middag! Vegisterkaker,
-                    Hasselbackpoteter, rosenkål, rødkål og brun saus!!</p>
-        </div>
-      </text>
-    </TEI>
-    <TEI>
-      <teiHeader>
-        <fileDesc>
-          <titleStmt>
-            <textSigle>NO/000.00002</textSigle>
-            <title>funkygine</title>
-            <domain>blog</domain>
-          </titleStmt>
-          <sourceDesc>
-            <analytic>
-              <h.author>Vasstrand, Jørgine</h.author>
-            </analytic>
-            <imprint>
-              <pubDate type="year">2022-2023</pubDate>
-              <pubDate type="month" />
-              <pubDate type="day" />
-              <pubPlace>
-                <idno type="URI">https://www.funkygine.com/</idno>
-              </pubPlace>
-            </imprint>
-          </sourceDesc>
-        </fileDesc>
-      </teiHeader>
-      <text>
-        <div>
-          <head>DET ER LITT KOKKO!</head>
-          <p>I desember 2020 testet jeg hundekjøring for første gang, og jeg elsket hvert
-                    eneste sekund av opplevelsen. De påfølgende månedene fikk jeg etter hvert være
-                    med Leif Tore, som driver Sjusjøen Husky Tours, på flere og flere turer.
-                    Langsomt men sikkert ble jeg pittelitt mindre amatør og i april 2021 utfordret
-                    han meg til å prøve meg på Gausdal maraton i januar året etter. Et hundeløp på
-                    300 km.</p>
-          <p>Vi begynte å trene enda litt til, og jeg ble enda litt mer glad i hunder og
-                    hundekjøring.</p>
-          <p>Så ble jeg gravid, og det var ikke akkurat planlagt. Med termin i januar ble det
-                    selvsagt nokså umulig å få til å delta i hundeløpet, og hele greia ble utsatt.
-                    Jeg fortsatte allikevel å kjøre, men selvfølgelig langt mindre enn det jeg ville
-                    gjort om jeg ikke hadde vært gravid.</p>
-          <p>Heldigvis var ikke Leif Tore lei av meg, så vi bestemte oss for at vi skulle
-                    prøve oss igjen denne vinteren. Og da ikke bare på Gausdal maraton, men også på
-                    Femundløpet. Noe som er litt kokko. Å tro at jeg, med såpass lite erfaring, skal
-                    klare å kvalifisere meg og ikke minst delta på et hundeløp på 450 km.</p>
-          <p>Men så tror jeg allikevel at man kan komme innmari langt med et brennende
-                    engasjement, stor treningskapasitet og ikke minst veiledning og støtte fra fine
-                    folk som ønsker at du skal få det til.</p>
-          <p>Så jeg prøver meg. Følger drømmen og hopper i det med både armer og bein. Vel
-                    vitende om at jeg i utgangspunktet er amatør og med stor ydmykhet både for de
-                    profesjonelle som driver med dette, og for sporten generelt. Jeg føler meg
-                    heldig som får ta del i dette, og har enorm respekt for de ekte hundekjørerne.
-                    Både fordi dette er vanvittig tidkrevende og ikke nødvendigvis spesielt
-                    lønnsomt, men mest av alt fordi de elsker hundene sine.</p>
-          <p>Jeg vet jo at mange er skeptiske til å bruke hunder på denne måten, men jeg håper
-                    å kunne vise frem hvor utrolig fint det er. Samspillet mellom hund og menneske.
-                    Hvor mye hundene elsker å løpe, og hvor mye de som står på sleden elsker å se
-                    hundene sine få gjøre det de liker aller best.</p>
-          <p>Og ja, det blir serie av det! På TV2, neste år en gang!!!!!!</p>
-          <p>Helt til slutt. Takk til han som introduserte meg for dette, har drasset på meg i
-                    utallige turer, og har troa på at jeg kan få det til! Leif Tore du er best. Og
-                    det er Ida også.</p>
-        </div>
-      </text>
-    </TEI>
-    <TEI>
-      <teiHeader>
-        <fileDesc>
-          <titleStmt>
-            <textSigle>NO/000.00003</textSigle>
-            <title>funkygine</title>
-            <domain>blog</domain>
-          </titleStmt>
-          <sourceDesc>
-            <analytic>
-              <h.author>Vasstrand, Jørgine</h.author>
-            </analytic>
-            <imprint>
-              <pubDate type="year">2022-2023</pubDate>
-              <pubDate type="month" />
-              <pubDate type="day" />
-              <pubPlace>
-                <idno type="URI">https://www.funkygine.com/</idno>
-              </pubPlace>
-            </imprint>
-          </sourceDesc>
-        </fileDesc>
-      </teiHeader>
-      <text>
-        <div>
-          <head>TAKK FOR MEG SKAL VI DANSE!</head>
-          <p>De siste 12 ukene har fredagene bestått av utallige gjennomganger av koreografi
-                    og aller siste finpuss før sending. I dag er derimot en helt vanlig fredag, og
-                    det samme gjelder morgendagen. Ingen sminking, glitter, kameraprøver, nerver
-                    eller spenning. Bare vanlig helg, og det kjennes utrolig deilig.</p>
-          <p>Jeg har savnet hverdagen enda mer enn jeg trodde, og selv om den er alt annet enn
-                    rolig og avslappende er det deilig å være en del av kaoset her hjemme igjen. Når
-                    det er sagt angrer jeg ikke et sekund på at jeg takket ja til å være med på Skal
-                    Vi Danse All Star. Det har vært en opplevelse for livet, og jeg er utrolig
-                    takknemlig for alt jeg har fått være med på, alt jeg har lært,
-                    mestringsopplevelsene og utfordringene.</p>
-          <p>Det er det jeg sitter igjen med, i tillegg til et bunnsolid vennskap til Santino
-                    så klart, ikke skuffelsen over å ikke ha stukket av med første plassen. Tro det
-                    eller ei, men det kjennes helt greit å ikke ha vunnet. Vi ble slått på
-                    målstreken av noen som har levert danseprestasjoner i øverste klasse fra første
-                    uke, og jeg har fått være med tidenes sesong av Skal Vi Danse.</p>
-          <p>Så kanskje jeg har vokst litt i løpet av disse ukene, eller i alle fall siden
-                    forrige gang, for jeg er altså så stolt over det vi har fått til og det kjennes
-                    ut som en like stor bragd uavhengig av utfallet! Og dere som begynner å kjenne
-                    meg, vet jo at det ikke er en selvfølge når det kommer til meg.</p>
-          <p>Ellers stormer det fint i media om dagen, og jeg har for lengst mistet oversikt
-                    over antall artikler som har blitt skrevet om de få kontroversielle linjene jeg
-                    la ut mandag kveld. Jeg har valgt å holde munn siden, ettersom jeg rett og slett
-                    ikke har noe mer å kommentere, men det har ikke hindret noen i å ta det
-                    fullstendig ut av konteksten det ble skrevet i. Mikse og trikse, spe på med
-                    andres uttalelser og blåse det opp til noe langt større enn det faktisk var.</p>
-          <p>Men, men… jeg tenker at det som vet, de vet. Og de som ønsker å misforstå, de
-                    hadde misforstått uansett. Sånn er det stort sett alltid.</p>
-          <p>Igjen takk til alle som har stemt, heiet og støttet oss gjennom denne
-                    opplevelsen! Det har vært helt rått, og jeg føler meg ordentlig heldig så har en
-                    så fin heiagjeng! Litta mimring på slutten her, så skal jeg gi meg! </p>
-          <p>Tango med lungebetennelse i første program! Rett fra Kypros til sending, og har
-                    fortsatt ikke kommet over at vi bommet på løftet, men herlighet så gøy det
-                    var!!</p>
-          <p> Program to! Litt mindre nervøs enn på premieren, Santino klarte å puste normalt
-                    igjen og en fest av en jivekoreografi! </p>
-          <p>Chachacha i program tre! Den uken slet jeg med å skjønne hva jeg drev med.
-                    Plutselig var det ny telling, og mer skulle ikke til for å vippe meg av pinnen,
-                    men vi landet på begge på beina!</p>
-          <p>Første program etter at Santino fikk skulderen ut av ledd. En rar og trist uke,
-                    men utrolig stolt over det vi fikk til sammen med Lars tross alt.</p>
-          <p>I program fem ble det enarms paso doble i Kill Bill kostyme! Sykt bra løst av
-                    Santino, og veldig lettet over at vi fikk danset sammen igjen!</p>
-          <p>Så var det slowfox! Til Morten! Og med Morten.</p>
-          <p>Lip sync i program syv! Med en hel skokk med nydelige gutter! Takk til både Jump
-                    crew gutta og brødrene mine for formidabel innsats og en helt vanvittig gøy
-                    lørdag!</p>
-          <p>Samba og gruppedans! Første uken med to danser. Jeg danset for hundekjøring og
-                    melkespreng! </p>
-          <p>All star i all star! Salsa med Atle og Santino!</p>
-          <p>Halloween i program 10! Første og eneste uken på topp alene etter argentinsk
-                    tango, og duodans med Chengiz og Rikke! </p>
-          <p>Semifinale med nerver på topp, duell mot Hetland og billett til finalen!!! Paso
-                    og Rumba på parketten! </p>
-          <p>Og ikke minst grinemaraton med Noah på balkongen.</p>
-          <p>Finalen!! Den desidert gøyeste av alle lørdager, og tro det eller ei den med
-                    minst nerver! Argentinsk tango, samba og moderne.</p>
-          <p>En siste takk til alle de som jobber i kulissene til Skal Vi danse! Med alt fra
-                    hår til kamera. Det er mange flinke folk det.</p>
-        </div>
-      </text>
-    </TEI>
-    <TEI>
-      <teiHeader>
-        <fileDesc>
-          <titleStmt>
-            <textSigle>NO/000.00004</textSigle>
-            <title>funkygine</title>
-            <domain>blog</domain>
-          </titleStmt>
-          <sourceDesc>
-            <analytic>
-              <h.author>Vasstrand, Jørgine</h.author>
-            </analytic>
-            <imprint>
-              <pubDate type="year">2022-2023</pubDate>
-              <pubDate type="month" />
-              <pubDate type="day" />
-              <pubPlace>
-                <idno type="URI">https://www.funkygine.com/</idno>
-              </pubPlace>
-            </imprint>
-          </sourceDesc>
-        </fileDesc>
-      </teiHeader>
-      <text>
-        <div>
-          <head>DANSEUPDATE OG FUNKYGINE FIBERBRØD!</head>
-          <p>Nok en danseuke er over, som betyr at vi er godt i gang med en ny! Krysser
-                    fingrene for en litt mindre dramatisk uke, og at vi finner gode løsninger hvor
-                    Santino får danset uten å belaste skulderen! Vi fikk jo til en bra åpning på
-                    dansen vår nå på lørdag, til tross for at bare en arm ble brukt, og resten hjalp
-                    jo Lars oss med! Så heldig jeg er som fikk danse med to så fine og flinke
-                    gutter.</p>
-          <p>Tusen takk for stemmer, støtte og fine meldinger folkens! Vi gleder oss til å
-                    fremføre nok en dans, og jeg skal terpe som bare juling på paso til neste
-                    sending!!</p>
-          <p>Og apropos trening, hektiske dager og masse på tapetet… nok søvn, nok væske, og
-                    ikke minst nok næringsrik mat! Uten mat og drikke, duger helten ikke. Haha, ikke
-                    at jeg er en helt akkurat, men dere skjønner poenget. Et variert, sunt og godt
-                    kosthold er avgjørende for å kunne prestere bra. Enten det er på dansegulvet, på
-                    skolebenken, på trening eller jobb. Og som den brødelskeren jeg er, så ville jeg
-                    bare minne dere på at grovt brød, med sunt pålegg er en perfekt måtte å fylle
-                    energilagrene på! Spesielt Funkygine Fiberbrød dere! Hvorfor?</p>
-          <p>Det smaker godt!</p>
-          <p>Er naturlig rikt på kostfiber og høyt proteininnhold</p>
-          <p>Det er 93 % grovt (ekstra grovt på grovhetsmerket)</p>
-          <p>Gir deg alle de næringsstoffene du trenger for å holde deg aktiv lenger</p>
-          <p>Det er nøkkelhullsmerket</p>
-          <p>Det inneholder mindre av de tingene man bør spise mindre av, og mer av de tingene
-                    man bør spise mer av</p>
-          <p>Et av Norges mest solgte brød (snikskryt)</p>
-          <p>Det er sammenbakt og saftig – holder seg lenge</p>
-          <p>Kan spises til alle dagens måltider, frokost, lunsj, middag og kveldsmat</p>
-          <p>Du får med et bilde av meg på kjøpet (hehe, denne er halvironisk)</p>
-          <p>Kanskje dere har flere gode grunner? Og vet dere hva! Denne uken fyller Funkygine
-                    Fiberbrød 3 år. Det ble lansert i september 2019 og siden den gangen har det
-                    blitt solgt 7,5 million brød. Helt sprøtt, og jeg er så glad for at så mange
-                    liker brødet mitt. Det er jo utelukkende på grunn av dere at brødet fortsatt er
-                    i butikkhyllene, og at det i tillegg er et av norges mest solgte brød!! Ikke nok
-                    med det. 2,5 millioner pakker med rundstykker har dere også puttet i
-                    handlekurven. På bare 1,5 år!!</p>
-          <p>Rått.</p>
+        <div id="W2D-005$A">
+          <div id="W2D-005$B">
+            <head> Developing a Policy for Public Participation </head>
+            <head> Introduction </head>
+            <p> All of us have used, are using or might in the future use our health and personal social services. </p>
+            <p> These services often have an important effect on the health and wellbeing of those of us who use them. So, if you live within our area you will want us to provide an efficient service which meets you needs as closely as possible, with the resources we have available. Generally, people who get help from health and social services make much better progress when these services take account of their hopes and needs. </p>
+            <p> In the past, we did not always realise the importance of giving: - you, the public in general; - service users (those of you who use our services); - carers (people who look after their relatives or friends); a say in the development of our health and social services. However, the recent reforms in health and personal social services were based on the belief that involving the three groups mentioned above in decisions about the planning, sharing out and delivering of our services is vital in developing really effective services. One government after another has said how important this involvement is. </p>
+            <p> In his introduction to <hi> 'Involving Users: Improving the Delivery of Local Public Services' </hi> , the Minister for Public Service said:</p>
+            <p>
+              <quote>
+                <hi rend="italic"> "This government is committed to modernising our public services: to improving their quality and making them more responsive to users….public services should consult and involve the public. That is because we believe in finding out direct from people what their experiences of public services are, and how they could be improved." </hi>
+              </quote> (National Consumer Council, Consumer Congress and First Unit in the Cabinet Office, 1999.)  </p>
+            <p> In Northern Ireland, the 'Code of Practice on Openness in the Health and Personal Social Services' (DHSS, 1996) makes a clear commitment to <quote> 'providing ways to make it easier for the public to be involved in making decision about their health and personal social services care' </quote>. The 'Well into 2000' document says 'the full participation of individuals and local communities is essential in planning and implementing strategies to enhance their own health and wellbeing'. (Well into 2000 and the Regional Strategy; DHSS, 1998.) The Equality Commission says that discussion with appropriate individuals and groups should be a central part of the policy process. (Equality Commission for Northern Ireland: Consultation Paper; Guidelines, Public Authority Schemes, 1999.) </p>
+            <p> The Social Services Inspectorate (Northern Ireland) has published 'Standards for Consumer Involvement in Community Care Service, (Social Services Inspectorate, DHSS, 1999.) This was based on work with disabled people and other involved organisations, and it included field testing (market research) of the standards in one community trust in each board 's area. The field testing found evidence that people who used their services also got involved in planning their own care, and got partly involved in planning services at a practical level. They found little evidence of the public being involved, at planning and policy levels, in health boards or trusts. Also, there weren't any clearly-defined policies for the public (particularly those who use these services to get involved. (Consumer Involvement: Changing Attitudes; DHSS, 1997.) This is likely to be the situation across nearly all health and personal social services. </p>
+            <p> We recognise the interest that the public have shown when we make changes to our health and personal social services. Recent public involvement in discussions about the future role of local hospitals shows how much interest the public have and how much they want to be involved in decisions affecting these hospitals. Some of you who use our services (services users) and your carers want more of a way in your own treatment and care, and in the development and delivery of our services generally. </p>
+            <p> The introduction of community-care services gives individual service users and carers the chance to be more fully involved in the decisions we make about their own care and support services. A group of users and carers, who worked with our officers on issues about public involvement, asked to be continually involved in our decision making through formal processes. (The Voice of Users and Carers; EHSSB, 1995.) For our service reviews, like those on day services for people with physical disabilities, and services for people with eyesight problems, w have had contributions from those of you using our services and your carers. </p>
+            <p> More professionals (like doctors) are beginning to understand how important it is to listen to their patients or clients. This is because professionals do not always 'know best'. The patient or client and their carers understand their own situation best, and the professionals should remember this when they plan the treatment or care. </p>
+            <head> Aims of our policy </head>
+            <p> The following are the aims of our policy to involve you in our decision making. They are to: - show our commitment to making sure that you have an important effect on our policy and the way we develop and deliver our services; - make sure that we set up effective and appropriate procedures to involve you, including members of ethnic and other minority groups, in a real and ongoing discussion about health and personal social services; - make sure that we keep you informed about the resources (like money and staff) that we have available for health and social services, and the issues that we need to consider when we decide how to share out these resources; - encourage and help you to get more involved in our decision making; - decide how much you need to be involved for us to make sure that our services respond to your needs; - make sure that if you want it, you can get involved in developing our policies, services and delivery in ways that meet your needs and circumstances; and - make sure that we regularly monitor and measure how well our public-involvement policy works. </p>
+            <head> Principles </head>
+            <p> - We and HPSS Trusts in our area (providers of health and personal social services) will encourage public involvement at all levels. </p>
+            <p> - We and HPSS Trusts in our area will encourage two-way involvement, so that you can ask questions and reply to the questions that we ask. </p>
+            <p> - The way we involve you will depend on each situation. </p>
+            <p> - We will try to make sure that we listen to different views, including those of minority groups. </p>
+            <p> - The way we involve you will be real, important and ongoing. </p>
+            <p> - We will have systems in place (for example, a website for giving your views) that allow you to contribute to our policies effectively. </p>
+            <p> - We will respond to any worries that you have, where we can. </p>
+            <p> - We will keep any promises that we made to you about involving you in our decision making. </p>
+            <p> - We will try to make sure that we take account of all your interests and groups when we make decision which affect you. </p>
+            <p> - Your involvement will have clear results which we will monitor and share fully with everyone involved. </p>
+            <p> - We will use clear, jargon-free language in all our communication with the general public. </p>
+            <head> Who are the public? </head>
+            <p> All of you who live within the area that we cover make up our 'public'. This means individuals, families, groups, organisations and communities who use our services now, or might do in the future, and who have an interest in how we provide and develop our services. When we talk about 'the public' in this paper, we mean those of you who live in our area, including those of you who use our services and your carers. We want to make sure that our public involvement process is open to all of you who want to contribute your views, including those of you from ethnic and other minority groups. </p>
+            <p> We realise that as well as individuals giving us their views, the public make their views known in a number of ways, including through their elected representatives, voluntary organisations and community groups. Our policy is not to interfere with the well-established role of public representatives, voluntary organisations and groups in the way they represent their members. Instead, our policy is to give you extra ways to strengthen your involvement, and public involvement in general, by building on existing methods. </p>
+            <head> What do we mean by involvement? </head>
+            <p> Public involvement is about involving the people who make decisions and provide our services with the ordinary person, in matters that affect and interest them all. The 'Well into 2000' document (see page 2 for details) makes it clear that involvement means the full participation (taking part) of individuals and local communities in planning services policies and putting them into practice. </p>
+            <p> We believe that the following main points are vital if we are to have full public involvement. </p>
+            <head> 1 Information </head>
+            <p> If we are to get the public involved, we need to provide clear and relevant information in a range of appropriate formats, for example, on audio tape. The DHSS 's 'Code of Practice on Openness in the Health and Personal Social Services' gives details about the information that you, the public need. This includes information about: - the services we provide, the targets and standards we set, the results we achieve, the costs and how good our services are; - our important policy suggestions or proposed changes in the way we deliver our services; - how we and our trusts communicate with the public; - how we and our trusts are managed and funded; and - how you can contact the Eastern Health and Social Services Council, and the Northern Ireland Commissioner for Complaints (the Ombudsman). </p>
+            <p> We have a policy for producing information in a way that suits those of you with specific needs, for example, on audio tape and translated into other languages, if you ask for it. </p>
+            <head> 2 Consultation (discussion) </head>
+            <p> This means that we listen to: - you (the public); - people using our services (service users); and - your carers; to find out and answer their questions. The Equality Commission identified four main reasons for consultation (in their 'Consultation Paper: Guidelines, Public Authority Schemes, 1999). </p>
+            <p> These four main reasons are to: - work out current policies, services, functions or laws; - get your vies on proposed policy, service and law developments; - explore new ideas and issues, and how they affect the public; and - develop policies on questions that affect everyone. </p>
+            <p> Our consultation policy will include discussions through our existing systems and processes, such as the work of our policy-planning teams and our links with public-representative groups. It will also include 'one-off' arrangements such as public meetings, work groups and a citizens ' jury. This whole process will need a flexible approach that considers the needs of the individuals, groups or communities that we are consulting. </p>
+            <p>
+              <hi rend="italic"> Citizens ' juries are made up of between 12 and 16 members of the public, who are chosen at random from the electoral register. They hear evidence from a range of specialist witnesses on a particular topic over several days and make a report which is usually <sic> purblished </sic>
+                <corr> published </corr> . The jury members then reach their own conclusions. They do not have to be experts in the topic they are considering or belong to any interest group. </hi>
+            </p>
+            <head> 3 Participation (taking part) </head>
+            <p> In its widest sense, participation means that the public, service users and carers will have a lot of influence over our decision making. We will keep them all fully informed before, while and after we make our decisions. Their views, experiences, needs and understanding will be central to our decision making. </p>
+          </div>
         </div>
       </text>
     </TEI>
@@ -332,41 +85,53 @@
       <teiHeader>
         <fileDesc>
           <titleStmt>
-            <textSigle>NO/001.00000</textSigle>
-            <title>sophieelise.blogg.no</title>
-            <domain>blog</domain>
+            <textSigle>EN/001.00000</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
           </titleStmt>
           <sourceDesc>
             <analytic>
-              <h.author>Isaksen, Sofie Steen</h.author>
+              <h.author>Alvin Jackson</h.author>
             </analytic>
             <imprint>
-              <pubDate type="year">2017</pubDate>
+              <pubDate type="year">1992</pubDate>
               <pubDate type="month" />
               <pubDate type="day" />
               <pubPlace>
-                <idno type="URI">https://reisekick.no/</idno>
+                <idno type="URI">Oxford </idno>
               </pubPlace>
             </imprint>
           </sourceDesc>
         </fileDesc>
       </teiHeader>
       <text>
-        <div>
-          <head>jeg blir rørt</head>
-          <p>Jeg merker at fellesferien er over, for å si det sånn. De siste ukene har jeg gått mer eller mindre alene 
-                rundt i nabolaget på morgenen, men i dag sa det PANG og folk løper rundt i gatene på vei fra A til B, 
-                trikken var stappfull klokken 07:00 og "blåmandag" var sikkert ordet jeg hørte mest i forbifarten. 
-                MEN, så glad jeg blir av å se alle de spente ungdommene som er i Oslo for norway cup! Over alt er det 
-                fotballlag som går rundt med store smil om munnen og sikkert har deres livs beste uke akkurat nå, å kunne 
-                observere sånt gjør meg rørt, haha..</p>
-          <p>Jeg er også ute av feriemodus, og i går kveld spratt jeg plutselig opp av senga og fikk følelse av at 
-                det snart er julaften, noe det åpenbart ikke er, jeg bare gleder meg så mye til fredag når *** **** ****** endelig 
-                skal avsløres for offentligheten. Jeg har blitt påvirket av folket rundt og har hatt høy puls i hele dag, 
-                og tok derfor et par timer med telefon i flymodus nå på kvelden, sovnet av på sofaen, og nå ligger jeg i 
-                sengen med verdens rareste sokker på beina som jeg ikke kan forstå blir kalt "mote". Nå får jeg vel sikkert 
-                en mail fra en eller annen fyr med fot-fetish, det pleier å være en klassiker hver gang jeg poster bilder av 
-                beina mine. Det går greit da, folk må få holde på som de vil.</p>
+        <div id="W2D-002$A">
+          <head> Are you paying more tax then necessary? </head>
+          <p> More than 28 million people in the United Kingdom are paying more tax than they need to. </p>
+          <p> Last year alone, we handed over in excess of <amp> pound sign </amp> 5 billion to the Inland Revenue which could have been avoided if our affairs had been arranged more tax efficiently. </p>
+          <p> Without this contribution, the Chancellor would have had to raise the basic rate to 26.5p to collect the same amount. </p>
+          <p> This startling information was recently revealed in research commissioned by IFA Promotion Ltd. Using the latest available Inland Revenue data, the report isolated almost <amp> pound sign </amp> 1 billion of tax paid in error; <amp> pound sign </amp> 1.3 billion which could have been easily avoided; and, over <amp> pound sign </amp> 3 billion which could have been saved by implementing rather more complex tax-saving strategies. </p>
+          <p> The largest are of tax "waste" (over <amp> pound sign </amp> 5 billion) can be traced back to people not claiming their allowances. Income which should fall within their tax-free allowance ends up being taxed. </p>
+          <p> Waste occurs when married couples, with one partner earning more than the other, do not use their allowances to best effect. If one spouse pays tax and the other doesn't, a switch of income into the non-taxpayers name would mean that the income would go from being taxed to tax-free. </p>
+          <p> With the married couples allowance now fully transferable, higher earning wives can achieve a greater slice of tax-free income, while the widening of the 20 per cent tax band also offers scope for tax saving. </p>
+          <p> Bank and building society accounts also provide fertile ground for tax waste. Deposits with banks and buildings society are taxed, at source, at the 25 per cent rate. </p>
+          <p> Those people paying tax at the 20 per cent rate can claim a refund of 5 per cent while non-taxpayers can ask for the interest to be paid gross. But an estimated <amp> pound sign </amp> 360 million tax was paid last year by people who have either failed to register for gross interest or failed to reclaim the tax overpaid. </p>
+          <p> A further <amp> pound sign </amp> 550 million could have been savvied if a greater number of banks and building society investors had made use of the Tax Exempt Special Savings Account (TESSA). The TESSA allows savings (up to <amp> pound sign </amp> 3,000 in the first year and up to <amp> pound sign </amp> 9,000 over five years) to grow tax free as long as they are held for the full five year period. </p>
+          <p> Shareholders, both those holding equities direct or via a unit trust or investment trust, are wasting an estimated <amp> pound sign </amp> 750 million in tax. </p>
+          <p> A small part of this total results from non-taxpayers failing to reclaim the tax paid on their dividends, but the largest proportion stems from insufficient use being made of the Personal Equity Plan (PEP). </p>
+          <p> The PEP allows up to <amp> pound sign </amp> 9,000 worth of equities to be held in a tax-free environment each year. The savings in one year, while perhaps only marginal for the basic rate taxpayer, can mount up considerably over a period of time. </p>
+          <p> The potential savings are obviously enhanced for the higher rate taxpayer. And yet, of up to 13 million share or unit trust holders, some 9.9 million have no PEP at all. </p>
+          <p> Please remember that the levels and bases of taxation can change. The reliefs referred to are those that currently apply and the value of relief from taxation is dependent on individual circumstances. In addition, you must bear in mind that the value of shares and units can fall as well as rise and the return may be less than the amount investment. </p>
+          <p> Inheritance tax is a particularly nasty tax in that it is levied on assets which have been accumulated with income that has already been taxed. </p>
+          <p> The one thing in its favour, however, is that by utilising wills, life policies, gifts and the annual exemptions available, its impact can be largely mitigated. </p>
+          <p> Few people though, plan ahead for inheritance tax and, as a result the Inland Revenue takes in around <amp> pound sign </amp> 1.3 billion every year from this source. </p>
+          <p> Another area of waste can be attributed simply to mistakes made by the Inland Revenue. </p>
+          <p> There are by no means infallible, but too many people accept what the Revenue say <sic> the </sic>
+            <corr> they </corr> owe without checking the figures. Random checking by the Inland Revenue in 1992/93, in an effort to find tax fiddlers, revealed some <amp> pound sign </amp> 270 million of tax overpaid, but this is obviously just the tip of the iceberg. A further <amp> pound sign </amp> 170 million could be saved if people declared all their income and paid their tax bills on time thereby avoiding penalties, which can be severe. </p>
+          <p> Areas of potential tax savings abound. There are still many people for whom it would be tax efficient to contract out of the State Earnings Related Pension Scheme (SERPS) while over <amp> pound sign </amp> 100 million could be saved by using the products of the Department for National Savings more effectively. </p>
+          <p> The tax treatment of life assurance products, particularly friendly society policies, could again save more than <amp> pound sign </amp> 100 million per year. </p>
+          <p> Nobody likes paying tax, so it makes sense to cut out as much of the waste as possible. Impartial, independent financial advice from someone well versed in the tax planning field is essential if you are to make the most of the opportunities available. </p>
+          <p> This article has been authorised by a person who is regulated in the conduct of investment business by the Securities and Investments board.(SIB). </p>
         </div>
       </text>
     </TEI>
@@ -374,54 +139,43 @@
       <teiHeader>
         <fileDesc>
           <titleStmt>
-            <textSigle>NO/001.00001</textSigle>
-            <title>sophieelise.blogg.no</title>
-            <domain>blog</domain>
+            <textSigle>EN/001.00001</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
           </titleStmt>
           <sourceDesc>
             <analytic>
-              <h.author>Isaksen, Sofie Steen</h.author>
+              <h.author>Alvin Jackson</h.author>
             </analytic>
             <imprint>
-              <pubDate type="year">2017</pubDate>
+              <pubDate type="year">1992</pubDate>
               <pubDate type="month" />
               <pubDate type="day" />
               <pubPlace>
-                <idno type="URI">https://reisekick.no/</idno>
+                <idno type="URI">Oxford </idno>
               </pubPlace>
             </imprint>
           </sourceDesc>
         </fileDesc>
       </teiHeader>
       <text>
-        <div>
-          <head>om jeg kunne endre en ting</head>
-          <p>Jeg legger sjeldent ut bilder av antrekk, og det er helt ærlig fordi jeg er så lav og ser – om mulig – 
-                enda lavere ut på bilder. Ikke at det gjør noe å være liten, men om jeg kunne endre EN ting på meg selv så 
-                ville det ha vært høyden. Den følelsen når blogglesere på 12 år kommer bort til meg for å ta bilde, og jeg 
-                ender opp i froskeperspektiv å må stå på tå slik at vi alle skal få plass i en selfie, haha.. Og jeg gidder 
-                ikke høye hæler hele tiden, i Oslo er det så mye brostein og å halte seg bortover der for å kompensere for 
-                høyden er ikke verdt det.</p>
-          <p>Uansett, i dag har jeg sett ut som jeg alltid gjør: kledd i sort, og med sneakers på. Kjolen er 
-                mormor sin og over 30 år gammel, jeg er skikkelig glad for at jeg får plukke fritt fra hennes gamle klær 
-                når jeg besøker. Jeg skal definitivt ta vare på mine mer "spesielle" antrekk, som ting jeg har båret på rød 
-                løper, slik at mine barn kan få glede av dem en dag. Da skal jeg fortelle at "mammaen din var kul en gang 
-                skjønner du" og så kan de himle med øynene og bli flaue.</p>
-          <p>Jeg startet dagen med sminke hos Dajana, løp noen ærender og møtte min venn Henrik for en spontan 
-                kaffe i solen (og vinden). Det var godt å snakke med denne solstrålen av et menneske igjen, som jeg møtte 
-                under overfladiske omstendigheter (vixen blogawards), men som har blitt en god venn på et dypt nivå. Det er 
-                sikkert kjedelig å høre meg repetere det hele tiden, men vi snakket generelt sett bare om hvor bra livet er. 
-                Hvor langt nede man har vært, men hvor sterkt man kommer ut av det. At man aldri sluttet å drømme, og at man 
-                fant til slutt. Jeg er så heldig som får se gode venner gjøre det bra, og ha mennesker rundt meg som inspirerer 
-                til å gjøre det bedre for meg selv, og de rundt meg. Den største gaven man kan gi til noen er å være tilstede, 
-                følge med på hva folk sier og gi en ordentlig respons – synes jeg. Og det har jeg så mange som gjør for meg, 
-                takk Gud for det. Mine venner er mitt alt. Jeg har vokst opp periodevis uten venner, og setter kanskje ekstra 
-                stor pris på sosial omgang med folk, men ja.. Point being: jeg vet hvordan det er å være på begge sider, og ting 
-                kan alltid snu, så ikke gi opp. Aldri.</p>
-          <p>Vi satt på Steam (ligger på egertorget) som egentlig ikke er et sted å applaudere sånn vilt over, 
-                men smoothien deres Bring Meg Bær er helt fantastisk. Smak den og du blir avhengig.</p>
-          <p>OJ SHIT POMMES FRITES nå tordnet det nettopp enormt utenfor og jeg ble redd, så jeg runder av dette 
-                blogginnlegget og gjemmer meg under dynen. Vi snakkes!</p>
+        <div id="W2D-002$B">
+          <head> Health and Safety Law (in Northern Ireland) </head>
+          <head> What you should know </head>
+          <p> Your health, safety and welfare at work are protected by law. Your employer has a duty to protect you and to keep you informed about health and safety. You have a responsibility to look after yourself and others. If there is a problem, discuss it with your employer or your safety representative, if there is one. </p>
+          <p> This leaflet is a brief guide to health and safety law. It does not describe the law in detail, but it does list the key points. </p>
+          <p> Your employer has a duty under the law to ensure, so far as is reasonably practicable, your health, safety and welfare at work. </p>
+          <p> In general, your employer 's duties include: - making your workplace safe and without risks to health; - keeping dust, fume and noise under control;
+                - ensuring plant and machinery are safe and that safe systems of work are set and followed; - ensuring articles and substances are moved, stored and used safely; - providing adequate welfare facilities; - giving you the information, instruction, training and supervision necessary for your health and safety. </p>
+          <p> Your employer must also: - draw up a health and safety policy statement if there are 5 or more employees, including the health and safety organisation and arrangements in force, and bring it to your attention; - provide free, any protective clothing or equipment specifically required by health and safety law; - report certain injuries, diseases and dangerous occurrences to the enforcing authority; - provide adequate first-aid facilities; - consult a safety representative, if one is appointed by a recognised trade union, about matters affecting your health and safety; - set up a safety committee if asked in writing by 2 or more safety representatives. </p>
+          <p> Employers also have duties to take precautions against fire, provide adequate means of escape and means for fighting fire. </p>
+          <p> In many workplaces employers may have other specific duties: - to take adequate precautions against explosions of flammable dust or gas and when welding and soldering containers which have held an explosive or flammable substance; - to maintain a workroom temperature of at least 16 <amp> degrees sign </amp> C after the first hour of work where employees do most of their work sitting down; - to keep the workplace clean; - to provide, maintain and keep clean washing and toilet facilities and accommodation for clothing and to supply drinking water; - to see that workrooms are not overcrowded and that they are well ventilated and lit; - to ensure that floors, steps, stairs, ladders, passages and gangways are well constructed and maintained and not obstructed; - to take special precautions before allowing employees to enter and work in a confined space; - to ensure that employees do not have to lift, carry or move any load so heavy that it is likely to injure them; - to guard securely all dangerous parts of machines; - to see that employees, especially young people, are properly trained or under adequate supervision before using dangerous machines; - to ensure that lifting equipment (hoists, lifts, chains, ropes, cranes and lifting tackle) and steam boilers, steam receivers and air receivers are well constructed, well maintained and examined at specified intervals; - to give employees suitable eye protection or protective equipment for certain jobs; - to take proper precautions to prevent employees being exposed to substances which may damage their health; - to take precautions against danger from electrical equipment and radiation. </p>
+          <p> As an employee, you have legal duties too. They include: - taking reasonable care for your own health and safety and that of others who may be affected by what you do or do not do; - cooperating with your employer on health and safety; - not interfering with or misusing anything provided for your health, safety and welfare. </p>
+          <p> If you think there is a health and safety problem in your workplace you should first discuss it with your employer, supervisor or manager. You may also wish to discuss it with your safety representative, if there is one. </p>
+          <p> If the problem remains or you need more help, health and safety inspectors can give advice on how to comply with the law. They also have powers to enforce it. Your employer can give you their names and addresses. </p>
+          <p> The Department of Economic Development 's Employment Medical Advisory Service can give advice on health at work and first-aid. The address is: Royston House, 34 Upper Queen Street, Belfast BT1 6FX. </p>
+          <p> You can get advice on general fire precautions etc from the Fire Brigade or your fire officer. </p>
+          <p> The main legislative provisions are contained in the Health and Safety at Work (Northern Ireland) Order 1978, but for particular purposes the Factories Act (Northern Ireland) 1965, the Office and Shop Premises Act (Northern Ireland) 1966, the Agriculture (Safety Health and Welfare Provisions) Act (Northern Ireland) Order 1983, the Fire Services (Northern Ireland) Order 1984, the Mines Act (Northern Ireland) 1969, the Nuclear Installations Act 1965 and other Acts and Orders and Regulations made under any of these may be equally relevant. </p>
         </div>
       </text>
     </TEI>
@@ -429,87 +183,4193 @@
       <teiHeader>
         <fileDesc>
           <titleStmt>
-            <textSigle>NO/001.00002</textSigle>
-            <title>sophieelise.blogg.no</title>
-            <domain>blog</domain>
+            <textSigle>EN/001.00002</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
           </titleStmt>
           <sourceDesc>
             <analytic>
-              <h.author>Isaksen, Sofie Steen</h.author>
+              <h.author>Alvin Jackson</h.author>
             </analytic>
             <imprint>
-              <pubDate type="year">2017</pubDate>
+              <pubDate type="year">1992</pubDate>
               <pubDate type="month" />
               <pubDate type="day" />
               <pubPlace>
-                <idno type="URI">https://reisekick.no/</idno>
+                <idno type="URI">Oxford </idno>
               </pubPlace>
             </imprint>
           </sourceDesc>
         </fileDesc>
       </teiHeader>
       <text>
-        <div>
-          <head>day vs night sminkelook</head>
-          <p>Å ha en sminkelook på dagen og så en annen på kvelden kan virke komplisert, spesielt nå på sommeren 
-                hvor de fleste bruker litt mindre sminke på dagtid. Men, det trenger ikke å være hverken vanskelig eller 
-                innebære mange ulike produkter! Likevel er det greit å variere litt, i mørket kan man kjøre på med litt mer 
-                sminke og en litt mer "mystisk" look, og på dagtid foretrekker i alle fall jeg litt mer rosa, lys brunt og 
-                glød. Jeg skal vise dere mine favoritter, med en rabattkode nederst i innlegget!</p>
-          <div>
-            <head>DAG</head>
-            <p>Som nevnt over liker jeg å bruke litt lettere produkter på dagtid, og det skal gjerne ta kort 
-                        tid å sette sammen looken. Jeg synes jeg ser ganske søt og uskyldig ut her? Hehe</p>
-            <p>På dagtid elsker jeg å ha glød i kinnene, og da gjerne litt rosa. Men, ikke FOR rosa! 
-                        Det skal se naturlig ut, som om man har vært ute en dag i litt frisk luft. Milani Illuminating 
-                        face powder kan brukes til så mye, blant annet highlighter, markere kinnbeinene og som blush, og 
-                        den er så fin! Lett på huden, og ser naturlig ut som er et MUST for min del. Bonus! Den er faktisk 
-                        også fin å bruke rett over leppene, da ser de større ut.</p>
-            <p>Jeg bruker NYX  3-in 1 Brow Pencil, fargen Espresso på brynene. Dette er en nyhet og jeg har 
-                        derfor ikke brukt den så lenge, men OM jeg er fornøyd! Den funker jo like greit både dag og natt. 
-                        Stort pluss for å være enkel å bruke, i tillegg til en farge som passer meg perfekt. Det er så 
-                        vanskelig å finne brynsprodukter som ikke er for varme i tonen, synes jeg. Denne passer enten 
-                        du er mørk eller lys, også midt i mellom som jeg er nå.</p>
-            <p>På lepper har jeg falt skikkelig for merket Burts Bees, alle leppeproduktene jeg har fra dem 
-                        gjør leppene myke og gir en fin farge i tillegg. Selv om den ser naturlig ut er det ett av få 
-                        leppeprodukter hvor jeg ikke føler for å bruke lipliner under, den legger seg fint uansett. Denne 
-                        leppestiften har også 8 timers holdbarhet, og det kan jeg faktisk skrive under på. Holder hele dagen! 
-                        Fargen jeg bruker heter Blush Basin. Anbefaler dette merket på det varmeste.</p>
-            <p>Jeg bruker faktisk kun disse produktene i tillegg til foundation (den jeg bruker finner du HER, 
-                        men jeg har valgt å ikke inkludere den i innlegget siden jeg har skrevet om den så mange ganger før).</p>
-          </div>
-          <div>
-            <head>øyenskygge dag &amp; natt.</head>
-            <p>For øyenskygge bruker jeg samme palett både dag og natt, nemlig BH – Cosmetics Eyeshadow Palette. 
-                        Det er så digg å ha funnet en palett som kan brukes til så mye! Det virker kanskje "unødvendig" å ha 
-                        en stor palett med mange farger som ligner på hverandre, men tro meg – det er viktig å ha nyanser med 
-                        bare litt ulik tone for å kunne bygge opp en fin look på øyenskygger om man skal gå litt mer drastisk 
-                        til verks. Sjekk ut enhver youtuber og du vil forstå hva jeg mener! Den er perfekt for naturlige toner, 
-                        men også litt mer dramatisk etterhvert.</p>
-          </div>
-          <div>
-            <head>NATT</head>
-            <p>På kveldstid liker jeg å ta litt mørkere skygger samt lepper. De to fungerer godt i kombinasjon 
-                        selv om mange velger å kjøre enten eller, så lenge fargene er i litt samme nyanse. Jeg liker også 
-                        mer highlight som virkelig popper frem på dansegulvet, hehe. Og mer markerte kinnbein!</p>
-            <p>Leppestiften jeg har brukt er Winky Lux, LIP VELOUR MATTE LIPSTICK, og fargen heter Dirty Love. 
-                        Dette er også en leppestift som er skikkelig myk og deilig på leppene, og stort pluss – den smitter 
-                        ikke så enkelt av, så da kan du fint drikke, kline eller hva enn du velger å gjøre på kveldstid med 
-                        leppestift på, hehe. Den holder også utover hele kvelden, og ser matt ut selv om den gir fuktighet.</p>
-            <p>Som highlighter har jeg brukt Maybelline Master Strobing Stick. Den er så bra! Altså, 
-                        skikkelig en favoritt. Jeg likte den ikke så godt i starten men har nå vendt meg til hvor 
-                        "intens" den er, som egentlig bare er et pluss. Den blender seg også fint inn med all annen 
-                        sminke og blir ikke liggende som et lag oppå huden, det synes jeg ikke er noe fint uansett om 
-                        highlighter skal stikke seg frem.</p>
-            <p>theBalm schwing black liquied eyeliner har jeg nevnt før, men jeg sier det gjerne igjen. 
-                        Om du ikke er så stødig på hendene og vil legge en fin våt liner er dette den du må gå for, også 
-                        om du er stødig når jeg tenker meg om – for det enkleste er vel det beste? Perfekt om du trenger å 
-                        øve deg, eller er proff og vil gjøre jobben på halvparten av tiden.</p>
-            <p>Bahama mama.. Blir jeg noen sinne lei av dette pudderet? Min favoritt over flere år, og likevel 
-                        blir jeg aldri ferdig. Det er et matt pudder som funker perfekt om du vil ha markerte kinnbein, jeg 
-                        liker også å bruke det for å gjøre nesen smalere, som øyenskygge.. Ja, mulighetene er rett og slett 
-                        mange. En bestselger, og med god grunn. I tillegg er det SYKT drøyt i bruk og jeg hadde mitt første i 
-                        nesten ett helt år.</p>
+        <div id="W2D-002$C">
+          <head> PROVISIONS OF COVER </head>
+          <head> FIRST TRUST BANK ACCIDENTAL DEATH PLAN </head>
+          <p> The following information has been prepared to summarise the benefits and limitations of this cover. This protection is being made available at this time to selected First Trust Bank Visa Cardholders and their spouses. Please retain this summary for filing with your actual Insurance Policy. </p>
+          <head> Eligibility </head>
+          <p> First Trust Visa Cardholders aged 17 or above and under 70 are eligible to apply for <amp> pound sign </amp> 1,000 of no-cost cover and optional additional protection. Spouses of Cardholders (if also 17 or above and under 70) are eligible to apply for optional protection. </p>
+          <head> Acceptance Guaranteed </head>
+          <p> No medical examination is necessary and there are no health questions to answer. Your acceptance is guaranteed – regardless of your health or occupation – provided you are aged 17 or above and under 70. </p>
+          <head> Benefits </head>
+          <p> The First Trust Bank Visa Cardholder named on the enclosed Application Form may select <amp> pound sign </amp> 1,000 of Accidental Death benefits for a 10-year term without any charge during or after the term. The Cardholder may apply for this <amp> pound sign </amp> 1,000 no-cost over only once. He or she (and spouse) may also purchase optional additional benefits under the Plan – a choice of <amp> pound sign </amp> 20,000, <amp> pound sign </amp> 40,000 or <amp> pound sign </amp> 60,000. </p>
+          <p> Benefits are payable for all types of covered accidents occurring anywhere in the world, 24 hours a day. The amount of benefit paid depends upon your age at death. The full amount of your no-cost cover and your optional additional protection will be paid if you are aged under 75, 50 <amp> per cent sign </amp> if you are aged between 75 and 80. </p>
+          <p> Benefits are paid if death resulting from an accident occurs within 365 days of the date of the accident, provided the accident occurs while the Policy is in force. A claim for benefits may be submitted up to a full year after the date of accidental death. Payment will be made to your estate. </p>
+          <head> Cardholder/Spouse Discount </head>
+          <p> When both the Cardholder and spouse apply for the optional additional cover, the cover is available at a special lower rate. This valuable discount is available even if only one person is a First Trust Bank Visa Cardholder. </p>
+          <head> These rates apply to any age and do no increase with age. For your convenience and with your authority, premiums will be charged to your First Trust Bank Visa Account each month. </head>
+          <EdCm> table showing rates </EdCm>
+          <head> Renewability </head>
+          <p> Your no-cost <amp> pound sign </amp> 1,000 cover will remain in effect for a full 10-year period, provided you remain a First Trust Bank Visa Cardholder. </p>
+          <p> Your optional additional cover is automatically renewable to age 80. As long as your premiums are paid when due, your cover cannot be cancelled by anyone other than yourself. </p>
+          <head> Exclusions </head>
+          <p> No person will be excluded from receiving benefits under this Plan or required to pay an extra premium by virtue of occupation, avocation or sporting activities. Only a limited number of events are excluded. </p>
+          <p> Accidental Death Plan benefits will not be payable in the following cases: suicide, attempted suicide or intentional self-injury; an accident occurring while the Insured is under the influence of alcohol or of any drug not prescribed by a registered medical practitioner; flying or any form of airborne aerial activity, except while travelling on a recognised airline; war, invasion or act of foreign enemy, hostilities (whether war is declared or not), terrorism, civil war, rebellion, revolution, insurrection or military or usurped power. </p>
+          <head> How to Apply </head>
+          <p> 1. Indicate the amount of cover you desire. (Remember, the Cardholder named on the Application Form is eligible for <amp> pound sign </amp> 1,000 worth of First Trust Bank Accidental Death Insurance at absolutely no charge.) </p>
+          <p> 2. Complete and sign the enclosed Application Form, including the Payment Instruction portion of the Form if you desire additional cover. </p>
+          <p> 3. Return your Application Form in the pre-paid envelope provided prior to 30 April 1994. </p>
+          <p> Send no money. When your Application Form has been processed, your Insurance Policy will be sent to you for your review, and – if you selected additional cover – your premiums will be automatically charged to your First Trust Bank Visa Account each month. Your cover will commence on the Effective Date stated in your Insurance Policy provided your first premium has been paid. </p>
+          <head> 15-Day No-Risk Inspection </head>
+          <p> You are guaranteed the right to examine your Insurance Policy without obligation. If you are not satisfied – for any reason – you may return your Insurance Policy within 15 days and you will be under no obligation whatsoever. Any premiums that you may have paid will be promptly and fully refunded. </p>
+          <head> The Company That Underwrites The Plan </head>
+          <p> First Trust Bank has selected Avon Insurance plc as the underwriter for this special Accidental Death Plan. Avon was established over 65 years ago and is part of the NFU Mutual and Avon Group, a major British Insurance Group with assets of over <amp> pound sign </amp> 3,000 million. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/002.00000</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-004$A">
+          <head> Career decisions: Working out the next step </head>
+          <p>
+            <hi rend="bold"> Making decisions about your future career can be daunting, but if you do nothing to plan your future, you can be sure that nothing will happen. Few graduates arrive at a satisfying career by chance so read this section to get some advice on how to make sound career decisions. </hi>
+          </p>
+          <head> It 's your choice </head>
+          <p> Making a career decision is something that you must do for yourself – but it 's almost always easier if you enlist the help of friends, family and careers advisers. </p>
+          <p> The first step is to realise that YOU have a decision to make and that only YOU can move things along. For instance, talking to a friend or careers adviser will help you to recognise things that you do well, your strengths and weaknesses and to identify other skills such as team work that employers will be looking for when they recruit. </p>
+          <p> Ask yourself questions such as: <amp> bullet point </amp> what are my achievements? <amp> bullet point </amp> what do my achievements say about me as a person? <amp> bullet point </amp> what are my strengths and weaknesses? <amp> bullet point </amp> what sort of job will I find interesting and rewarding? </p>
+          <p> While these questions are not paramount in your day to day activities they are quite critical in the process of making the transition from university to employment. You can do it! It is worth the effort to identify your skills and interests, your values and what motivates you. When it comes to selecting jobs and filling in application forms you will spend less time scratching your head in search of an elusive answer and more time providing evidence that you fit the employer 's criteria. You are also likely to be more content with your choice than someone who wanders along waiting for a bolt of lightning to strike them on the way to a lecture. Career choice tends to occur not as a sudden revelation but as a result of a process which you start and you manage. </p>
+          <p>
+            <quote>
+              <hi rend="bold"> "If you don't know where you are going, you will probably end up somewhere else." </hi>
+            </quote>
+          </p>
+          <p> Dr LJ Peter, Canadian educator </p>
+          <head>
+            <hi rend="bold"> Making your decision – overcoming obstacles </hi>
+          </head>
+          <head>
+            <hi> bold&gt; Getting to know yourself – on computer </hi>
+          </head>
+          <p> Technology can prove useful here. You need to identify attitudes, personality traits and skills that might help you choose suitable job areas. For example you might know that some of the following are important for you: a) a job working with people – advising, guiding them or caring for their physical and/or emotional health. b) a job where you want to see the end product of your endeavours such as project management, management consultancy etc. c) a job where you need to motivate, manage and develop other staff and colleagues. d) a job which is fast moving and change-orientated. </p>
+          <p>
+            <hi rend="italic"> Prospect Planner </hi> is a powerful interactive computer package which can help you analyse all these factors in a rational logical manner. It allows you to build up profiles of the skills you want to use in work; your personal values in relation to work and will, if you ask it, provide lists of jobs that match the profiles you construct. </p>
+          <p> However, a word of caution – the programme is great but be prepared to get a long list of jobs. Some may seem at the least mildly entertaining, others somewhat strange, but remember the computer applies logic based on the information you input. Thinking about why it suggests you should become a member of the clergy, an accountant or even a careers adviser can be useful because it will enable you to identify the pattern and skill of matching yourself to jobs. If you can make this connection you are well on the way to making informed and successful career decisions. Finally, <hi rend="italic"> Prospect Planner </hi> lets you store and/or print off the work you do. Do speak to a careers adviser if you are unsure about any part of your printout. <hi rend="italic"> Prospects Planner </hi> is available in the Careers Service. </p>
+          <head>
+            <hi rend="bold"> Getting to know yourself – on paper </hi>
+          </head>
+          <p> If you prefer a less dynamic approach, Queen 's Careers Service has several good books to guide you through this process. For example, <hi rend="italic"> No idea about a career? </hi> by Chris Phillips or <hi rend="italic"> What colour is your parachute? </hi> by R. Nelson Bolles may be most appropriate for your needs. Do try both approaches to find out which tool – computer or paper – best suits you. </p>
+          <head>
+            <hi rend="bold">  Graduate employment </hi>
+          </head>
+          <p> In recent years graduate employment has changed and the signs are that change will continue. Driven by technology and competition, organisations tend to be leaner and flatter in structure with a focus on results. The small business sector continues to expand with a strong emphasis on entrepreneurship. So whilst the traditional areas of graduate employment may have changed, there is still significant demand for graduates, particularly those who can present an effective combination of academic achievement, work experience and personal and employability skills. </p>
+          <head>
+            <hi rend="bold"> Skills employers look for </hi>
+          </head>
+          <p> Remember that employers want to recruit the best graduate for the job. To enable them to distinguish between applicants they ask that graduates offer a profile of skills relevant to work and progression within it. The current buzz word for this profile is 'employability skills' – ie skills which are work related and central to job success. </p>
+          <p> Broadly these skills can be views under four main headings: </p>
+          <head>
+            <hi rend="bold"> Specialist </hi>
+          </head>
+          <p> It helps to be an expert at something, eg marketing, tax accounting, family law, aerospace engineering, marine biology, organisational psychology. </p>
+          <head>
+            <hi rend="bold"> Generalist </hi>
+          </head>
+          <p> It helps to have general business skills and knowledge, eg finance/basic accounting, written communication, problem solving, use of IT. </p>
+          <head>
+            <hi rend="bold"> Connected </hi>
+          </head>
+          <p> It helps to be a team player, eg management skills, meetings skills, negotiation skills, networking skills, presentation skills. </p>
+          <head>
+            <hi rend="bold"> Self-reliant </hi>
+          </head>
+          <p> It helps to be able to work alone as well as with others, eg confidence, self-awareness, action planning, political awareness. </p>
+          <head>
+            <hi rend="bold"> Developing your employability skills </hi>
+          </head>
+          <p> These skills are essentially work-related, central to job success and you should consider ways of developing them. Here are some examples of how to develop them: 1. Register for the Skills to Succeed programme which has been developed and is delivered by staff from the Careers Service. The programme lasts for two hours per week over one semester and will help you to: <amp> bullet point </amp> identify the skills developed through study and part-time work <amp> bullet point </amp> develop knowledge in relation to employer expectations of graduates <amp> bullet point </amp> demonstrate employability skills <amp> bullet point </amp> increase your awareness of the range of graduate opportunities available to you <amp> bullet point </amp> acquire increased confidence and competence at handling selection methods used by graduate recruiters. </p>
+          <p> Successful completion of this course will lead to the award of a University Certificate in Career Management and Employability Skills. </p>
+          <p> 2. A level 2 undergraduate module in career management and employability skills is available to second year students during first and second semesters. This provides a sound basis for if you are considering taking a year out on placement or if you want to build employability skills into your degree. Find out more about the Skills to Succeed programme and the module in Career Management and Employability from Queen 's Careers Service. </p>
+          <p> 3. Consider building the learning for Work module into your degree. This is available to Level 2 and 3 students as a free-standing module. It provides undergraduates with an opportunity to develop the skills and competences they will need in their future careers through project work. Find out more from the Centre for the Enhancement of Learning and Teaching (CELT), 75 University www.qub.ac.uk/celt/module. </p>
+          <p> 4. Get involved with a student society of Student Consultative Committee (SCC). Remember – you will need to be active in these groups in order to develop skills. Turning up to a meeting isn't enough. </p>
+          <p> 5. Make the most of casual or part-time jobs. You will often get more responsibility if you ask for it or demonstrate that you can cope with it. Go on in-house training courses if available – a customer care or telesales course might give you an edge over others at interview. </p>
+          <p> The Students ' Jobshop@Queen 's can help you find part-time work – www.qub.ac.uk/jobshop. </p>
+          <p> 6. You can develop your skills through social activities related to your personal interests, eg coaching or captaining sports teams, fund raising for a charity, doing voluntary youth or community work. </p>
+          <p> 7. Use vacations constructively – get a casual job, or better still and undergraduate vacation placement (read <hi rend="italic"> Work Experience Bulletin </hi> regularly) or travel. Look for and make the most of opportunities available – employers are not impressed with the <quote> 'I didn't know about that' </quote> approach. Section 4, Work experience may give you some ideas, as will the <hi rend="italic"> Queen 's Guide to Work Experience </hi> , available from the Work Placement Centre, 8 Malone Road. </p>
+          <p> 8. Take a year out – an invaluable way of developing the skills that employers seek. The Careers Service advertises semester and year out placements throughout the year. </p>
+          <p> 9. Be aware that through studying for your degree you can develop, for example, time management, team work and presentation skills. </p>
+          <p> Remember developing work-related and interpersonal skills and enjoying your time at university are not mutually exclusive. Just think about what you can do on a day to day basis and relate it to the bigger picture – easy when you think about it! </p>
+          <head>
+            <hi rend="bold"> To summarise </hi>
+          </head>
+          <p> There are several resources available to help you to make career decisions. It will help if you: </p>
+          <head>
+            <hi rend="bold"> 1. Begin to plan your future early.</hi>
+          </head>
+          <p> This sounds as boring as watching paint dry but it doesn't have to be. Many things you do at university will help you to make decisions. The trick is to be able to see these activities for what they are and for what they can say about you to an employer (a moment 's thought might get you an interview for a job). </p>
+          <head>
+            <hi rend="bold"> 2. Don't expect a career to just happen.</hi>
+          </head>
+          <p> Few people can truthfully say that their career decisions have been due completely to chance. YOU are the lead player in this process and YOU need to make decisions. </p>
+          <head>
+            <hi rend="bold"> 3. Spend as much time thinking about yourself and what you want from a career as you do in looking for jobs. </hi>
+          </head>
+          <p> Remember that the employers will be matching individuals, not degree transcripts, to jobs. </p>
+          <head>
+            <hi rend="bold"> 4. Are not afraid of getting it wrong. </hi>
+          </head>
+          <p> It is difficult with limited work experience to choose a career. Remember that your first employer and job are unlikely to be your last. As work patterns become more flexible and change to meet market pressures, the likelihood of a job and employer for life becomes less usual. You will probably find that any job, even if you decide that it isn't going to be a career will develop skills that can be transferred to other employment situations. </p>
+          <head>
+            <hi rend="bold"> 5. Always have </hi>
+            <hi rend="italic"> back-up plan </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Further sources of help </hi>
+          </head>
+          <p> Look in the bibliography file in the Careers Service for the full range of books available on career choice and decision making. <hi rend="italic"> No idea about a career? </hi> by Chris Phillips and <hi rend="italic"> What colour is your parachute? </hi> by R. Nelson Bolles provide useful starting points. </p>
+          <head>
+            <hi rend="bold"> Work experience </hi>
+          </head>
+          <p>
+            <hi rend="bold"> Work experience is an essential part of your university experience. It adds value to your degree and greatly improves your employment prospects. </hi>
+          </p>
+          <head>
+            <hi rend="bold"> What counts as work experience? </hi>
+          </head>
+          <p> The term 'work experience' is used as an umbrella phrase to cover a wide range of experiences. It could be: <amp> bullet point </amp> formal work experience – as in a sandwich placement within your degree <amp> bullet point </amp> informal – as in summer work, a vacation course, work shadowing or a part-time job <amp> bullet point </amp> related to extra-curricular activities – for example, the student who works on the student newspaper is gaining real insight into journalism. Similarly, participating in the Tutoring in Schools Scheme or being a leader with a youth organisation will be considered relevant experience for entry to postgraduate teacher training. </p>
+          <p> In an ideal world the best kind of work experience is that which is directly relevant to your future career plans, for instance: <amp> bullet point </amp> the history student who wants to pursue a career in museum work and spends a vacation working in the Public Records Office <amp> bullet point </amp> the engineering student who works one summer with a local engineering company and the second summer doing an IAESTE engineering placement overseas. </p>
+          <p> Obviously it helps if you have focused on your future plans because then you can try to shape your work experience. You will find that to get into certain careers an element of work experience will be essential – social work and clinical psychology are good examples. </p>
+          <p> However, not every student will be able to set up this 'ideal' kind of experience, so don't underrate that part-time job in the supermarket, the bar work, or the temporary clerical job. They all count towards giving you an external perspective and help you develop skills for the workplace. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/003.00000</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-003$A">
+          <head> better service better care </head>
+          <head> What the changes in health and social services mean for you </head>
+          <head> About this booklet </head>
+          <p> Every person in Northern Ireland comes into contact with the Health and Personal Social Services at some time, be it simply a visit to their GP or dentist, or perhaps a spell in hospital for something more serious. For those who, for whatever reason are unable to live independently – for example disabled or elderly people – contact with the caring services will be much more frequent, perhaps with visits at home by social work or community nursing staff. </p>
+          <p> So the changes taking place in the Health and Personal Social Services are of interest to everyone. Some people however are worried about what services will be available in the future. Some of the questions being asked are: - will I still be able to get my prescription, even if the medicines are expensive? - if my family doctor has a practice fund, will I still get the treatment I need? - can I still have a choice of hospital if I need treatment? - will I still have a choice about where I have my baby? - will hospitals which become self-governing Trusts stay completely within the health service? - will health services still be free? </p>
+          <p> The answer to all these questions is <quote> "Yes". </quote>
+          </p>
+          <p> This booklet has been designed to provide answers to questions like these and to give other information as well. However, it does not list all the services that are available. Information about services that are not covered here can be obtained from the bodies listed at the end of the booklet. </p>
+          <head> The Government 's proposals </head>
+          <p> The reforms described in subsequent pages result mainly from the Government 's White Papers "Promoting Better Health", which was published in 1987, and "Working for Patients", published in 1989. These proposals were aimed at making the Health Service more responsive to the needs of people and more concerned about improving their health, rather than just treating their illnesses. </p>
+          <head> Community care services </head>
+          <p> Since the publication of these White Papers the Department of Health and Social Services has issued "People First", in March 1990, which contained proposals for the future development of community care. These are in line with the Government 's approach to community care services, which is that they should be flexible and sensitive to individual need, that they should offer choice, intervene no more than necessary and should concentrate on those with the greatest needs. </p>
+          <p> This booklet does not over the changes in community care – many of which will not be in place before 1993. However further information will be made available in the future. </p>
+          <head> The welfare of children </head>
+          <p> An important part of the community care reforms will be new laws dealing with the welfare of children, which will be published for consultation later this year. The new legislation will reform the present law dealing with the care, protection and upbringing of children and the provision of services for them and their families and draw them together into single and more accessible code. </p>
+          <head> Your family doctor </head>
+          <p> Your family doctor – or GP – will be able to offer you and your family a wider range of services in future. There will be more emphasis on promoting good health and preventing disease. </p>
+          <head> SERVICES FOR THE FAMILY </head>
+          <p> Good health care is not just about treating you when you are ill, but also about giving help and advice so that you stay fit and well. </p>
+          <p> The Department 's Chief Medical Officer says:
+                <quote>
+              <hi rend="italic"> "More and more nowadays, people are realising the benefits of a healthy lifestyle. There are no spin-offs: healthy people make fewer calls on the resources that we put into treating the sick and injured; and they enjoy life more. So the emphasis in the future must be more on prevention, less on cure." </hi>
+            </quote>
+          </p>
+          <p> What services should you now look out for? </p>
+          <head>
+            <hi rend="italic"> For all adults </hi>
+          </head>
+          <p> You will be able to get regular "life-style" check-ups. These will be offered to you when you first register with a doctor, or if you have not seen your doctor for some time. The purpose of these check-ups is to: - give you the chance to discuss anything worrying you; - provide an opportunity to carry out a few simple tests (such as checking your blood pressure); - offer professional advice if need on such matters as diet, exercise, smoking and drinking. </p>
+          <p> In other words, your GP can advise you on how to look after yourself. This may include recommending that you attend one of the practice 's health promotion clinics. </p>
+          <p> GPs will be encouraged to provide more health promotion clinics. These may include clinics giving detailed advice on diet, blood pressure, smoking, diabetes, heart disease, drinking and stress. </p>
+          <head>
+            <hi rend="bold"> Family planning services </hi>
+          </head>
+          <p> Family planning services are available from most GPs and from family planning clinics, which also make services available to men. You can choose where to go for family planning advice. </p>
+          <p> If you prefer to get advice from a GP about contraception, you may choose to see a GP other than your own family doctor. Information about whether particular GPs provide contraceptive services is now more readily available (see "More Information for Patients" on page 9). </p>
+          <p> Details of family planning clinics in your area are available from your local Health and Social Services Board (see the list of addresses at the end of this booklet). In addition to general sessions, you may find that some clinics offer sessions to deal with particular methods of contraception or for particular groups. </p>
+          <p> Family planning services are provided free of charge to encourage all those who wish to use the services to do so. </p>
+          <head>
+            <hi rend="italic"> For women </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Cervical screening (smear tests) </hi>
+          </head>
+          <p> About 40 women die from cervical cancer every year in Northern Ireland. Many of these deaths could be avoided if more women had regular smear tests (known as cervical screening or cervical cytology). </p>
+          <p> Improvements are being made to the cervical screening services. How will these affect you? - all women between the ages of 20 and 64 are to be invited for screening (by March 1993). - the new system will ensure that all women in this age group are offered a test at least once every five years. </p>
+          <p> Your doctor will be able to give you advice and encourage you to have a smear test if appropriate. </p>
+          <p> The aim of the test is to detect conditions that could develop into cancer. If these conditions are found in good time, treatment is usually straightforward and almost always effective. </p>
+          <head>
+            <hi rend="bold"> Breast cancer screening </hi>
+          </head>
+          <p> Breast cancer is the most common form of cancer among women. An entirely new province-wide breast cancer screening programme run from specialised centres is being introduced. How will this affect you? - all women between the age of 50 and 64 are to be invited for screening by breast X-ray by March 1994. You will then be invited for screening every three years; - screening for older women (over 64) will be provided on request every three years. </p>
+          <p> This service is being targeted at women over the age of 50 because there is as yet little evidence that routine screening is of benefit to younger women. </p>
+          <p> Your Health and Social Services Board (see the list of addresses at the end of this booklet) will be able to give you advice on local services, or our doctor can advise you. </p>
+          <p> Women registered with a GP will get invitations for cervical and breast screening if appropriate. So please make sure that your GP has your correct address, especially if you have moved house recently. </p>
+          <head>
+            <hi rend="bold"> Well-women clinics </hi>
+          </head>
+          <p> GPs will be encouraged to provide more well-women clinics which deal with many issues to do with women 's health. </p>
+          <head>
+            <hi rend="italic"> For children </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Child health </hi>
+          </head>
+          <p> Your GP may offer a programme for following the development of your young children (under five years old). That means checks, in your GP 's surgery, on the height, weight, growth, development of the senses and other essential features in the first five years of your child 's life. Where your GP does not do this work, it will still be provided at local community clinics. </p>
+          <head>
+            <hi rend="bold"> Childhood immunisation </hi>
+          </head>
+          <p> If you don't get your children immunised against childhood diseases such as measles and whooping cough you are putting them at risk. These illnesses can be very distressing and sometimes dangerous. Your doctor will encourage you to make sure that your children get the protection of safe immunisation. </p>
+          <p> The table below shows when you should get your child immunised (but if your child is older and has not been fully immunised it is not too late to see your doctor). </p>
+          <EdCm> table </EdCm>
+          <head>
+            <hi rend="italic"> If you are over 75 </hi>
+          </head>
+          <p> Each year your doctor will offer you an assessment of your health and circumstances to make sure that all is well. </p>
+          <p> You can have this check-up done in your own home or at the doctor 's practice or surgery. In any event, your doctor will offer to visit you at home, or arrange for one of the professional practice staff to visit you, to make sure you are well and able to cope. </p>
+          <p> These services are strongly recommended. They offer the chance to get advice on how to deal with the problems everyone faces in old age. Failing eyesight, hearing difficulties, trouble with your feet and similar problems can often be helped once they have been identified. </p>
+          <head> A BETTER FAMILY DOCTOR SERVICE </head>
+          <head>
+            <hi rend="bold"> Greater convenience for patients </hi>
+          </head>
+          <p> Changes are taking place in the way your doctor 's surgery is run. Over the next few years you may find: - more convenient surgery hours; - more comfortable waiting rooms; - minor surgery available on your doctor 's own premises, to save having to go to hospital. </p>
+          <p> Will your doctor be able to spend as much time with you? - Yes. There are now more family doctors than ever before. As practice teams develop, you may be able to see not only the doctor, but the nurse, chiropodist and physiotherapist. </p>
+          <head>
+            <hi rend="bold"> More information for patients </hi>
+          </head>
+          <p> More information is now available to help you know more about the services your doctor provides. </p>
+          <p> - Health and Social Services Boards now produce directories of local family doctors, giving information about each doctor and the service the practice provides. You can find the address of your Health and Social Services Board on page 20 of this booklet. </p>
+          <p> - Each GP practice is now producing leaflets telling you about the range of health services available from the practice. </p>
+          <p> - Moving to another doctor if you want to is now easier. All you have to do is go to the surgery of the doctor of your choice and ask to be registered. If your new doctor agrees to put you on his or her list, that 's it. Different doctors may offer different types of services and their leaflets will help you choose. </p>
+          <head>
+            <hi rend="bold"> General Practice funding scheme </hi>
+          </head>
+          <p> Family doctors already play a vital role in the health and social services and they will play an even greater role in future. From April 1993, bigger practices will be able to choose to take control of funds to finance a range of local services for their own patients – including certain hospital treatments, and the cost to the services of prescriptions and some staff needed for the practice. </p>
+          <p> If your GP chooses to join the practice funding scheme, what will it mean? </p>
+          <p> - The level of funds will be agreed between your GP and the Department of Health and Social Services. It will take into account the health care needs of all the patients on the practice list – for example, the extra requirements of elderly people, patients with special needs, the hospital services likely to be used and so on. </p>
+          <p> - Your GP will be able to use the fund to arrange the right treatment for you speedily and effectively. For example, your GP should have greater flexibility to look around for treatment in hospitals which offer the shortest waiting times. The aim is to improve the choice of good quality services available to you and your GP. </p>
+          <p> - The practice will be able to use any savings from the fund for your benefit – for example, in employing another nurse or buying new diagnostic equipment for the surgery. </p>
+          <p> So if your doctor has a practice fund, will you still get the treatment you need? </p>
+          <p> - Yes. GPs will get sufficient funds to enable them to provide full and proper treatment for their patients. Even if the practice overspends its funds, there is no question of people not getting the treatment they need. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/004.00000</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-001$A">
+          <head> The Queen 's University of Belfast </head>
+          <head> Institute of Computer Based Learning </head>
+          <head> Background </head>
+          <p> Computer based approaches to teaching and learning have been a feature of curriculum development in a number of departments at Queen 's since the 1970s. Over the period 1984-1990, a major investment in student workstations sponsored jointly by Northern Ireland 's Department of Education and Industrial Development Board, enabled the University to establish its delivery infrastructure for computers in teaching. As a direct result of this initiative, interest in computer based learning (CBL) became widespread across the disciplines of the University. In October 1987, to act as a focus for this interest, the University established the Centre for Computer Based Learning (CCBL) in a joint venture between the Computer Centre and the School of Education. The CCBL was successful in a number of bids under national initiatives (see under Major Projects), and this success along with a desire to enable the study of the foundational academic disciplines of CBL led the University to create an independent Institute of Computer Based Learning (ICBL) in December 1992. 
+            </p>
+          <head> Aims and Objectives </head>
+          <p> The aims and objectives of the ICBL are to create and maintain a centre of excellence for computer based learning at the University; to develop courseware and software systems to support the teaching of all academic disciplines; to carry out research into computer based learning techniques; to undertake commissions for courseware. 
+            </p>
+          <head> Software development </head>
+          <p> Software developments are undertaken not only to support the production of teaching and learning materials but also as an important foundation for research. The objectives are to develop authoring systems, related utilities and a number of generic applications for the three common delivery platforms, viz PCs, Macs and Unix workstations. Key disciplines include visual programming, object-orientation and functional programming, and important applications include hypertext and Q <amp> ampersand </amp> A management, data visualisation, animation, simulation, modelling and natural language response analysis. 
+            </p>
+          <p> The underlying systems are written in C++ with an in-house class library offering common GUI objects and functionality across the three platforms. Writing in this system enables source code portability for tools, utilities, applications and courseware. The writing of courseware is facilitated by providing an integrated set of authoring tools and application generators, which make use of visual programming interfaces. 
+            </p>
+          <head> Courseware development </head>
+          <p> CBL may be used in many if not all areas of education and training. Within Queen 's, the ICBL works with a diversity of academic disciplines. Recent or current commitments at Queen 's range from advice on CVL and multimedia, through support of courseware development and use of tools, to actual collaborative projects. These activities have involved Mechanical Engineering, Built Environment, Pharmacy, Anatomy, Mental Health, Pathology, Dentistry, Accountancy, Italian, Legal Studies and the Staff Training and Development Unit. 
+            </p>
+          <p> The most significant collaboration in this area is the University 's current TLTP project – producing 210 hours of CBL, across 10 disciplines involving 30 academics – which is described in more detail below. 
+            </p>
+          <head> Research </head>
+          <p> The foundational academic disciplines of CBL are education, psychology and computer science. The Institute provides a focus for inter-disciplinary research for academics from these disciplines. The main themes under investigation at present are: Pedagogical Design, Curriculum Content, Assessment, Evaluation, Human Computer Interface, Intelligent Tutoring Systems, Learner Models, Neural Networks, Visual Programming, Modelling and Response Analysis. 
+            </p>
+          <p> Current research commitments are listed below Evaluation studies on the general use of computers in education and the particular use of CBL in the teaching of psychology. Lattice modelling of processes in polymer chemistry using statistical methods. Abstractions of graphical and textual language representations to support the construction of computer based models and simulators. Investigation and development of language systems for functional and object-oriented programming. Object-orientation methodology and reverse engineering for real-time network management. 
+            </p>
+          <head> Teaching </head>
+          <p> The ICBL will offer a MSc in Computer Based Learning, starting in late September 1994. Six modules are available in 1994/95: Information Technology and Services CBL Approaches CBL Systems Courseware Engineering Cognitive Modelling and Human-Computer Interaction Advanced CBL Design 
+            </p>
+          <p> A further four modules will be offered in 1995/96. 
+            </p>
+          <head> Staff Development </head>
+          <p> The Institute promotes the awareness of CBL concepts and techniques through seminars, summer schools and workshops. In addition, the ICBL collaborates with the University 's Staff Training and Development Unit in seminars for staff induction and in workshops in teaching methods with the Enterprise Unit. 
+            </p>
+          <head> Major Projects </head>
+          <head> Information Technology Training Initiative (ITTI) </head>
+          <p> This three year project is scheduled for completion in the third quarter of 1994. The products are courseware and other teaching materials on CBL itself, and authoring (system) tools. This is targetted at all tertiary level academic staff, and trainers in other organisations. 
+            </p>
+          <head> Teaching and Learning Technology Programme (TLTP) </head>
+          <p> This is a three year project to be completed in February 1996. The products are over 200 hours of teaching materials on a wide range of academic topics, to be deliverable on the three most common delivery platforms, viz PCs, Macs and Unix workstations. In the selection of topics and methods to be addressed, care has been taken to identify items of common interest to the wider audience of universities and higher education. At Queen 's, the new materials will generate over 50,000 student courseware hours per annum and a vigorous programme of dissemination will be undertaken to ensure that other institutions are aware of the materials to be made available. The academic disciplines are Education, General Practice, Languages, Obstetrics, Orthopaedics, Pharmacy, Physics, Psychology, Social Sciences and OR. 
+            </p>
+          <head> Staff </head>
+          <p> The director of the ICBL is Dr Fred McBride. Paddy Brannigan (Services) and Randall Thompson (Development) manage teams of courseware analysts and developers and systems programmers. The current staff complement is 23. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/004.00001</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-001$B">
+          <head> The Queen 's University of Belfast </head>
+          <head> Library Information </head>
+          <head> Borrowing Books </head>
+          <head> Who may borrow? </head>
+          <p> All Queen 's University staff and registered students, associate members and reciprocal associate borrowers are entitled to use the library and to borrow from it. 
+            </p>
+          <head> What may be borrowed? </head>
+          <p> Most of the books in the library can be borrowed. Certain categories of material are not available for loan. These include all periodicals; bibliographies (class Z on the ground floor and floor 1 of the Old Library Building); past examination papers; new books on display; university calendars, telephone directories, timetables; reference books on the ground floor and floor 1 of the Old Library Building (and in the ordinary book stacks, if so marked); and most of the Special Collections. 
+            </p>
+          <head> Period of loan </head>
+          <p>
+            <head>
+              <hi rend="italic"> Undergraduates, Postgraduates on taught courses, Associate Members and Reciprocal Associate Borrowers </hi>
+            </head>
+          </p>
+          <p> Undergraduates may borrow books from the main collection for two weeks; associate members and reciprocal associate borrowers for four weeks, this period being renewable if no prior reservation has been made by another reader. 
+                </p>
+          <head>
+            <hi rend="italic"> Staff and Research Students </hi>
+          </head>
+          <p> Staff and research students may borrow books from the main collection for twelve weeks, this period being renewable if no prior reservation has been mad by another reader. 
+                </p>
+          <p>
+            <hi rend="italic"> (The loan period to all borrowers for material borrowed from the medical Library is four weeks) </hi>
+          </p>
+          <p> Note: <hi rend="bold"> Books for which there is a waiting list at the time of borrowing are lent for one week only to all categories of reader. If these are returned late they are subject to a fine of 50p per day overdue. </hi>
+          </p>
+          <p> ALL BOOKS ARE SUBJECT TO RECALL AT ANY TIME IF REQUESTED BY ANOTHER READER 
+                </p>
+          <head> Fines </head>
+          <p> A fine of 5p per day, or 25p per week is levied for each book overdue (undergraduates, postgraduates on taught courses, associate members and reciprocal associate borrowers) Staff and research students incur fines at the same rate if an overdue notice has been sent and the borrower has failed to return the book by the date stipulated in the notice. Fines of 10p per day operate in the case of books recalled on behalf of another reader which have not been returned by the date stipulated on the recall notice. 
+                </p>
+          <p>
+            <hi rend="bold"> Books borrowed from the Undergraduate Collection or the Restricted Loans Collections are subject to a fine of 20p per hour or part thereof, if they are not returned on time. </hi>
+          </p>
+          <head> How to borrow books </head>
+          <p> You should bring any books you wish to borrow to the Issue Desk on the Ground Floor of the Old Library Building and hand them, along with your barcoded staff, student associate membership or reciprocal associate borrower identity card, to the assistant who will validate the loan. 
+                </p>
+          <head> How many books may I borrow? </head>
+          <p> Undergraduate and postgraduate students on taught courses may have on loan up to ten books at any one time from the main collections of the University Library. Some material is kept at the Issue Desk (e.g. Offprints of recommended journal articles or chapters from books). Borrowers may have 3 items from this collection on loan at any one time. In addition, QUB students may borrow up to four books from the Undergraduate Collection. 
+                </p>
+          <p> Personal Associate Members and Reciprocal Associate Borrowers may have 6 books on loan at any one time. Professional and Corporate Associate Members may have up to 10 books on loan a any one time. 
+                </p>
+          <p> Staff and research students of Queen 's may have up to 25 books on loan from the University Library at any one time. 
+                </p>
+          <head>
+            <hi rend="italic"> IMPORTANT NOTE: </hi>
+          </head>
+          <p> Borrowers remain responsible for books represented in the files by uncancelled records, and may be charged the replacement cost of any outstanding items. It is, therefore, very important that you do not leave books at the returns desk without ensuring that library staff have discharged the books in the computer files. 
+                </p>
+          <head> Lost books </head>
+          <p> The loss of any books should be reported to the Issue Desk immediately. A replacement fee, which includes a handling charge will be levied. 
+                </p>
+          <head> Renewing Books </head>
+          <p> Books due for return may be renewed if not wanted by another reader. Books for renewal should be taken to the Returns Desk in the Main Library. 
+                </p>
+          <p>
+            <hi rend="italic"> On an experimental basis a telephone renewal service is available for staff, research students, associate members and reciprocal associate borrowers. The number to ring for telephone renewal of Main Library books is ext 5022 (or 335022 from outside the University). </hi>
+          </p>
+          <head> Reservation of books </head>
+          <p> Should a book in the Main Library stock be on loan to another reader, it may be reserved by using the Public Reservation facility in the OPAC. Readers are limited to three 'public reservations' but additional reservations may be placed by enquiring at the Issue Desk. Alternatively, you may reserve a book by quoting the barcode number or ISBN to an assistant at the Issue Desk asking them to reserve the book for you. Readers may be asked to complete a reservation postcard. 
+                </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/004.00002</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-001$C">
+          <head> WORK FOR OUTSIDE ORGANISATIONS </head>
+          <p> The Senate, at its meeting on 6 April 1993, approved new arrangements to govern all work undertaken by members of staff for outside bodies. These new arrangements are set out in detail in the attached Notes of Guidance. 
+            </p>
+          <p> The main principles upon which new procedures have been based are: (i) a distinction between <hi rend="italic"> Intra-Contractual Work </hi> (i.e., work expressed or implied in contracts of employment) and <hi rend="italic"> Extra-Contractual Work </hi> (i.e. work which a member of staff cannot reasonably be expected to undertake as part of his or her contract of employment with the university); <li> a requirement that all academic and academic-related staff make an annual return on all work undertaken; (iii) a requirement that, where possible, work for outside bodies be carried out within the University 's contractual framework; (iv) a requirement that members of staff obtain the permission of the Director of their School/Unit and of the Standing Committee before undertaking work outside the University framework; (v) an understanding that staff carrying out approved private work, up to an annual value not exceeding 10 <amp> per cent sign </amp> of their basic salary, should not normally be asked to make a contribution to University funds; and (vi) a requirement that staff carrying out work with a value higher than in (v) above, should normally make a contribution to University funds, or take an appropriate abatement in salary, or take leave of absence without pay. 
+            </li>
+          </p>
+          <p> The Notes of Guidance also cover such matters are requirements for professional indemnity insurance, membership of public bodies, the treatment of honoraria paid for membership of outside bodies, detailed financial arrangements for outside work and on the exploitation of copyright material, patents etc, and conflicts of interest. 
+            </p>
+          <p> You will see that paragraphs 4-6 of the Notes outline the requirement that members of staff make an annual return on all work for outside bodies which relates to their professional skill or position in the University, <hi rend="italic"> plus </hi> personal and voluntary work which, in aggregate, is of such a volume of so timed that it might impinge on the performance of inter-contractual work. 
+            </p>
+          <p> A form has been prepared to facilitate the reporting of such work and a copy is enclosed. It would be appreciated if the form were completed and returned to <hi rend="bold"> Mrs N Benton, Administrative Secretary 's Office by Friday, 17 June 1994. </hi>
+          </p>
+          <p> This letter should also act as a reminder to those members of staff who wish to engage, or who have engaged in, work for outside organisations as covered by the procedures, but who have not as yet requested University permission. 
+            </p>
+          <p> Please note that <hi rend="bold"> NIL RETURNS ARE REQUIRED. </hi> Members of staff for whom the form has no relevance at the present time are asked to complete Section 1 of the form, which should then be signed and returned. 
+            </p>
+          <p> When received, a copy of the form will be made available to the Director of your School/Unit and to the Standing Committee in summary form. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/005.00000</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-008$A">
+          <head>
+            <hi rend="bold"> REPORT OF THE REMUNERATION <amp> ampersand </amp> COMPENSATION COMMITTEE TO THE BOARD </hi>
+          </head>
+          <p> Throughout the year, Irish Permanent plc had procedures in place which met with the Best Practice Provisions as set out in Sections A and B of the Irish Stock Exchange 's Listing Rules requirements on Directors ' remuneration. </p>
+          <head>
+            <hi rend="bold"> Remuneration <amp> ampersand </amp> Compensation Committee </hi>
+          </head>
+          <p> The Remuneration and Compensation Committee comprises John Bourke (Chairman), Eileen Lemass and Patrick O'Neill, all of whom are non-Executive Directors. The Committee is responsible for the formulation of the Group 's policy on senior executive remuneration. It considers and determines salaries and other terms of remuneration of the Executive Directors and senior executives. The remuneration of the Chairman is determined by the Board of Directors meeting with the Chairman in absentia. The Committee meets about four times a year, although more frequent meetings may be held if required. </p>
+          <head>
+            <hi rend="bold"> Remuneration Policy </hi>
+          </head>
+          <p> The Group 's policy on senior executive remuneration is to reward its executives competitively, having regard to the comparative marketplace in Ireland and the United Kingdom, in order to ensure that they are properly motivated to perform in the best interest of the shareholders. Advice is sought by the Committee from external consultants. </p>
+          <head>
+            <hi rend="bold"> Non-Executive Directors </hi>
+          </head>
+          <p> Non-Executive Directors are remunerated by way of Directors ' fees only, full details of which are disclosed in note 37 on page 47 of the financial statements. </p>
+          <head>
+            <hi rend="bold"> Executive Directors ' Remuneration </hi>
+          </head>
+          <p> The elements of the remuneration package for Executive Directors are basic salary and benefits, short-term performance bonuses, pensions, participation in the Share Option Scheme, participation in the Long-term Cash Bonus Scheme and the provision of mortgage loans. Each of these elements is discussed below and full details of the Executive Directors ' remuneration is set out in note 37 on page 47 of the financial statements. </p>
+          <head>
+            <hi rend="bold"> Salary <amp> ampersand </amp> Benefits </hi>
+          </head>
+          <p> The basic salary of Executive Directors is reviewed annually having regard to competitive market practice. Employment-related benefits primarily comprise a company car. </p>
+          <head>
+            <hi rend="bold"> Short-term Performance Bonus </hi>
+          </head>
+          <p> Short-term performance bonus awards in any year are determined by the Committee by reference to criteria which are set by the Committee and by reference to the overall profit performance of the Group. The awards range from 0 per cent to a maximum of 50 per cent of basic salary in any one financial year. </p>
+          <head>
+            <hi rend="bold"> Pensions </hi>
+          </head>
+          <p> Executive Directors participate in a group defined benefit pension scheme. Pension benefits are determined solely in relation to basic salary. </p>
+          <head>
+            <hi rend="bold"> Share Option Scheme </hi>
+          </head>
+          <p> Executive Directors, in common with other senior executives, participate in the Share Option Scheme which was adopted on 21 September 1994. Under the Scheme, the Committee is entitled to select executives to participate in the Scheme. The terms of the Scheme provide that options shall be exercisable at the higher of the market value per share on the day preceding the date of grant of the option or its nominal value. The aggregate exercise price of options quoted under the Scheme may not exceed four times an executive 's emoluments. Shares representing not more than five per cent of the shares for the time being in issue may be issued under the Scheme. Options may only be exercised if the Group meets certain earnings per share targets based upon growth in earnings per share over a three year period following the grant of any option. </p>
+          <head>
+            <hi rend="bold"> Long-term Cash Bonus Scheme </hi>
+          </head>
+          <p> Prior to Conversion, the Group operated a Long-term Cash Bonus Scheme ('The Scheme') which was terminated on 30 June 1994 and was then replaced by the Share Option Scheme. The participants in the Scheme are eight senior members of management, including the three Executive Directors. Payment will be made in 1997 of IR <amp> pound sign </amp> 2.02 million (being IR <amp> pound sign </amp> 1,633 million plus interest accrued thereon). This is in accordance with the decision of the Board made in 1994, on the basis of expert external advice, which determined the amount which was due under the Scheme. Payment was conditional upon the Group meeting pre-determined performance criteria for the five financial years 1992 to 1996 which have now been achieved. </p>
+          <head>
+            <hi rend="bold"> Mortgage Loans to Directors </hi>
+          </head>
+          <p> Any mortgage loan to an Executive Director of Irish Permanent plc up to IR <amp> pound sign </amp> 50,000 is charged at 4 <amp> per cent sign </amp> which is the reduced rate of interest applicable to mortgage loans to Irish Permanent staff. Where applicable, the balance of any mortgage loan in excess of IR <amp> pound sign </amp> 50,000 to an Executive Director is subject to Irish Permanent 's normal terms and conditions for borrowers. </p>
+          <head>
+            <hi rend="bold"> Directors ' Service Contracts </hi>
+          </head>
+          <p> The Executive Directors operate under service contracts which may be terminated by the provision of two years ' notice by either party which is in accordance with the normal practice of companies listed on the London Stock Exchange. </p>
+          <head>
+            <hi rend="bold"> STATEMENT OF DIRECTORS ' RESPONSIBILITIES </hi>
+          </head>
+          <p> Company law requires the Directors to prepare financial statements for each financial year which give a true and fair view of the state of affairs of the Company and Group and of the profit or loss of the Group for that period. In preparing those financial statements, the Directors are required to: select suitable accounting policies and then apply them consistently; make judgements and estimates that are reasonable and prudent; prepare the financial statements on the going concern basis unless it is inappropriate to presume that the Group will continue in business. </p>
+          <p> The Directors are responsible for keeping proper books of account which disclose with reasonable accuracy at any time the financial position of the Company and the Group and to enable them to ensure that the financial statements comply with the Companies Acts, 1963 to 1990, and all Regulations to be construed as one with those Acts. They have general responsibility for taking such steps as are reasonably open to them to safeguard the assets of the Group and to prevent and detect fraud and other irregularities. </p>
+          <head>
+            <hi rend="bold"> REPORT BY THE AUDITORS TO IRISH PERMANENT plc ON CORPORATE GOVERNANCE MATTERS </hi>
+          </head>
+          <p> In addition to our audit of the financial statements, we have reviewed the Directors ' statements, on pages 10 and 11 on the Company 's compliance with the paragraphs of the Code of Best Practice specified for our review by the Irish Stock Exchange and their adoption of the going concern basis in preparing the financial statements. The objective of our review is to draw attention to non compliance with Listing Rules 12.43 (j) and 12.43 (v). </p>
+          <p> We carried out our review in accordance with guidance issued by the Auditing Practices Board. The guidance does not require us to perform the additional work necessary to, and we do not, express any opinion on the effectiveness of either the Company 's system of internal financial control or its corporate governance procedures nor on the ability of the Company to continue in operational existence. </p>
+          <head>
+            <hi rend="bold"> Opinion: </hi>
+          </head>
+          <p> With respect to the Directors ' statements on internal control on pages 10 and 11, and going concern on page 11, in our opinion the Directors have provided the disclosures required by the Listing Rule referred to above and such statements are not inconsistent with the information of which we are aware from our audit work on the financial statements. </p>
+          <p> Based on enquiry of certain Directors and officers of the Company, and examination of relevant documents, in our opinion the Directors ' statements on pages 10 and 11 appropriately reflect the Company 's compliance with the other paragraphs of the Code specified for our review by Listing Rule 12.43 (j). </p>
+          <head>
+            <hi rend="bold"> AUDITORS ' REPORT </hi>
+          </head>
+          <head>
+            <hi rend="bold"> To the membership of Irish Permanent plc </hi>
+          </head>
+          <p> We have audited the financial statements on pages 20 to 49. </p>
+          <head>
+            <hi rend="bold"> Respective responsibilities of Directors and Auditors in relation to the financial statements: </hi>
+          </head>
+          <p> As described on page 17 the Company 's Directors are responsible for the preparation of financial statements. It is our responsibility to form an independent opinion, based on our audit, of those statements and to report our opinion to you. </p>
+          <head>
+            <hi rend="bold"> Basis of opinion: </hi>
+          </head>
+          <p> We conducted our audit in accordance with Auditing Standards issued by the Auditing Practices Board. An audit includes examination, on a test basis, of evidence relevant to the amounts and disclosures in the financial statements. It also includes an assessment of the significant estimates and judgements made by the Directors in the preparation of the financial statements, and of whether the accounting policies are appropriate to the Group 's circumstances, consistently applied and adequately disclosed. </p>
+          <p> We planned and performed our audit so as to obtain all the information and explanations which we considered necessary in order to provide us with sufficient evidence to give reasonable assurance that the financial statements are free from material misstatement, whether caused by fraud or other irregularity or error. In forming our opinion we also evaluated the overall adequacy of the presentation of information in the financial statements. </p>
+          <head>
+            <hi rend="bold"> Opinion: </hi>
+          </head>
+          <p> In our opinion, the financial statements give a true and fair view of the state of affairs of the Company and the Group at 31 December 1996 and of the profit of the Group for the year then ended, and have been properly prepared in accordance with the Companies Acts, 1963 to 1990 and all Regulations to be construed as one with those Acts. </p>
+          <p> We have obtained all the information and explanations we considered necessary for the purposes of our audit. In our opinion, proper books of account have been kept by the Company. The balance sheet of the Company at 31 December 1996 is in agreement with the books of account. </p>
+          <p> In our opinion, the information given in the Directors ' Report on pages 9 to 14 is consistent with the financial statements. </p>
+          <p> The net assets of the Company as stated in the balance sheet on page 21 are more than half of its called up share capital and, in our opinion, on that basis there did not exist at 31 December 1996 a financial situation which, under section 40(1) of the Companies (Amendment) Act 1983, would require the convening of an extraordinary general meeting of the Company. </p>
+          <head>
+            <hi rend="bold"> NOTES TO THE FINANCIAL STATEMENTS </hi>
+          </head>
+          <head>
+            <hi rend="bold"> 1 Statement of Accounting Policies </hi>
+          </head>
+          <head>
+            <hi rend="bold"> A Basis of preparation </hi>
+          </head>
+          <p> The financial statements have been prepared under the historical cost convention, in accordance with the Companies Acts 1963 to 1990, the European Communities (Credit Institutions: Accounts) Regulations 1992, and with applicable Financial Reporting Standards. </p>
+          <head>
+            <hi rend="bold"> B Basis of consolidation </hi>
+          </head>
+          <p> The Group financial statements include the financial statements of the Company, and of its subsidiary undertakings made up to 31 December 1996. </p>
+          <p> The results of subsidiary undertakings acquired during the year are included in the consolidated profit and loss account from the date of acquisition. Goodwill arising on acquisition of shares in subsidiary undertakings or assets of other businesses, being the excess of the acquisition cost over the fair value of the Company 's share of net tangible assets acquired, is written off against reserves in the year of acquisition. </p>
+          <head>
+            <hi rend="bold"> C Long-term assurance business </hi>
+          </head>
+          <p> In order to reflect the different nature of the Group 's and policyholders ' interests in the long-term assurance assets, the value of the long-term assurance assets attributable to the Group and the value of the long-term assets and liabilities attributable to policyholders are classified under separate headings in the consolidated balance sheet. </p>
+          <p> The amount shown as long-term assurance assets attributable to shareholders is determined based on a prudent assessment of the embedded value. The embedded value is the present value of statutory earnings expected to emerge in the future from policies currently in force, together with the net tangible assets of the business. In determining this value, assumptions regarding future mortality rates, lapse rates, surrender rates, investment returns, solvency margins and levels of expenses are made based on the experience of the business. This value is determined on the advice of independent qualified actuaries and is included separately in the consolidated balance sheet. </p>
+          <p> Movements in the value of the Group 's long-term assurance assets attributable to shareholders, grossed up for taxation at the standard corporation tax rate, are included as other operating income in the consolidated profit and loss account. </p>
+          <head>
+            <hi rend="bold"> D Tangible fixed assets </hi>
+          </head>
+          <p> Land, freehold premises and leasehold premises with unexpired terms in excess of 50 years are stated at cost. It is the policy of the Company to maintain these properties in good repair and it is considered that residual values are such that depreciation is not significant. Insofar as depreciation has not been written off these assets, the Company has not complied with Statement of Standard Accounting Practice No.12, because, in the opinion of the Directors, the amount involved is not material. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/006.00000</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-007$A">
+          <head>
+            <hi rend="bold"> Conversion </hi>
+          </head>
+          <p> On 21 September, 1994, Irish Permanent Building Society was converted from a building society to a public limited company called Irish Permanent plc. The entire business, property, rights and liabilities of the Society were vested in the Company on that date. Conversion took place in accordance with the terms of the Conversion Scheme, which was overwhelmingly approved by members at the Annual General Meeting on 23 March, 1994. It was the first Irish building society to take advantage of the Building Societies Act, 1989 enabling building societies to convert into public limited companies. Irish Permanent, which continues to be regulated by the Central Bank, now holds a banking licence. </p>
+          <p> Some 45,333,300 Free Shares had been validly claimed by 12 August, 1994 and were issued on Conversion to Qualifying Savers and Qualifying Borrowers. According to the records of the Company, a further 20,970,600 Free Shares may fall to be issued pursuant to claims under the Conversion Scheme. Such claims must be received by Irish Permanent on or before 21 September, 1997. </p>
+          <p> The Directors estimate that a maximum of 4,533,330 additional Free Shares may be issued as loyalty bonuses to persons of their nominees who validly claimed their Free Shares by 12 August, 1994 and who continue to hold their Free Shares on certain future dates. </p>
+          <p> Under the terms of the Conversion Scheme, a cash distribution is payable to certain former members of the Society. The Directors estimate that the cash distribution, which will be charged against reserves and will have no effect on the future dividend policy of the Group, will amount to approximately <amp> pound sign </amp> 2.6 million in total. </p>
+          <p> Under the terms of the Conversion Scheme, the Board has adopted the Employee Share Ownership Plan and the Share Option Scheme. </p>
+          <head>
+            <hi rend="bold"> Offer structure </hi>
+          </head>
+          <p> The Offer comprises 30,800,000 Ordinary Shares which are being offered at a price of 180 pence per Share. Of these Shares, 27,768,500 Shares are being offered on behalf of Irish Permanent and the balance is being offered on behalf of those persons who by 12 August, 1994 had validly requested the sale of their entitlements to Free Shares on their Free Share Claim Forms. </p>
+          <p> Under the Offer, 16,400,000 Offer Shares are being placed firm with institutional investors and 14,400,000 Offer Shares are being placed subject to recall to satisfy valid applications from Qualifying Persons. Of the Offer Shares being placed subject to recall, 1,440,000 Shares (being 10 per cent.) are being reserved to satisfy preferential applications from Qualifying Employees (other than Directors). </p>
+          <p> The Offer has been underwritten in full by West Merchant Bank Limited, IBI Corporate Finance Limited, Riada Corporate Finance Limited and Hoare Govett Corporate Finance Limited at the Offer Price. The stockbrokers to the Offer are Riada Stockbrokers Limited and Hoard Govett Corporate Finance Limited. </p>
+          <p> In connection with the Offer, West Merchant Bank Limited may effect transactions on The Stock Exchange which stabilise or maintain the market price of the Shares at a level which might not otherwise prevail on that Exchange. Such stabilising, if commenced, may be discontinued at any time and, in any event, must be discontinued by close of business on the 30th day after the date of Flotation. West Merchant Bank Limited may only effect such stabilising in accordance with all applicable laws and regulations. </p>
+          <EdCm> tables and figures </EdCm>
+          <head>
+            <hi rend="bold"> The business </hi>
+          </head>
+          <p> Irish Permanent is a leading retail financial services group in the Republic of Ireland. Its products include mortgages, savings, investments, life assurance and pensions and other retail financial services. </p>
+          <p> At 31 December, 1993, Irish Permanent was the largest building society in the Republic of Ireland measured in terms of total assets, profits and reserves. At that date, its total assets of <amp> pound sign </amp> 2.7 billion (including mortgage loans of <amp> pound sign </amp> 1.9 billion) represented approximately 35 per cent. of the total assets of <amp> pound sign </amp> 7.8 billion of all Irish building societies. Irish Permanent is the fourth largest banking group in the Republic of Ireland measured in terms of total assets at 31 December, 1993 and, in the view of the Directors, continues to be the leading provider of residential mortgage finance. </p>
+          <p> In 1992 and 1993, Irish Permanent was the leading mortgage lender in the Republic of Ireland. With new mortgage advances of some <amp> pound sign </amp> 323 million in 1993, it achieved a market share of approximately 24 per cent. in that year. The total of residential mortgage loans outstanding for all credit institutions reporting to the Central Bank in the Republic of Ireland at 31 December, 1993 amounted to approximately <amp> pound sign </amp> 7.3 billion. Irish Permanent 's residential mortgage portfolio of approximately <amp> pound sign </amp> 1.7 billion at that date represented some 23 per cent. of such loans. Statistics are, however, not available on the total residential mortgage loans outstanding by all lenders in the market. At 31 December, 1991, 1992 and 1993 respectively, Irish Permanent had a market share of interest-bearing saving balances in the Republic of Ireland in the range of 6-7 per cent. </p>
+          <head>
+            <hi rend="bold"> Competitive strengths </hi>
+          </head>
+          <p> Irish Permanent 's major competitive strengths which, in the view of the Directors, constitute a sound basis for the Group 's development following flotation, include:
+                a substantial customer base comprising over 79,000 mortgage accounts and over 590,000 savings and deposit accounts;
+                an extensive distribution network comprising 93 branches and 100 agencies in the Republic of Ireland, Northern Ireland and Great Britain, and a banking subsidiary in the Isle of Man;
+                a range of complementary mortgage, savings, investments, life assurance and pension products; an experienced and innovative management team; nationally recognised and respected brand names; a committed staff providing a high standard of customer service; strict credit control procedures and prudent lending policies, which have historically resulted in a low level of loan losses;
+                access to the equity and debt capital markets, in the latter case facilitated by the investment grade long term debt rating, A2, as assigned to Irish Permanent by Moody 's Investors Service; and a strong capital base and balance sheet which should facilitate a significant expansion of both current and new activities. </p>
+          <head>
+            <hi rend="bold"> Distribution network </hi>
+          </head>
+          <p> Irish Permanent has an extensive network of branches and agencies for the distribution of its products and services in the Republic of Ireland. The branch network provides the major point of contact with the majority of Irish Permanent 's customers and is the principal outlet for Irish Permanent 's mortgage, saving and money transmission products and services. </p>
+          <EdCm> figures </EdCm>
+          <head>
+            <hi rend="bold"> Prudential Life of Ireland </hi>
+          </head>
+          <p> On 30 June, 1994, Irish Permanent acquired Prudential Life of Ireland, a significant life assurance and pensions business in the Republic of Ireland, at a cost of <amp> pound sign </amp> 31.9 million (including acquisition costs) out of existing liquid resources. The fair value, including embedded value, of Prudential Life of Ireland at that date amounted to <amp> pound sign </amp> 29.8 million. The goodwill of <amp> pound sign </amp> 2.1 million so arising was written off against the reserves of Irish Permanent at 30 June, 1994. No contribution from Prudential Life of Ireland is included in the consolidated profit and loss account of the Group for the six months ended 30 June, 1994. The assets and liabilities of Prudential Life of Ireland are included in the consolidated balance sheet of the Group at 30 June, 1994. </p>
+          <p> Prudential Life of Ireland develops, markets and underwrites life assurance policies, pension policies and certain other products, including single premium products, in the Republic of Ireland. Its life assurance products are mainly regular premium unit-linked life assurance protection and savings policies. </p>
+          <p> In the year ended 31 December, 1993 and the six months ended 30 June, 1994, Prudential Life of Ireland generated embedded value after tax earnings of <amp> pound sign </amp> 4.2 million and <amp> pound sign </amp> 2.4 million respectively. Statutory earnings after tax for the same periods were <amp> pound sign </amp> 2.5 million and <amp> pound sign </amp> 1.2 million respectively. </p>
+          <p> The Directors intend to account for Prudential Life of Ireland in the accounts of the Group using the embedded value method, but will, also, provide information on statutory earnings. The Directors consider that the embedded value earnings of Prudential Life of Ireland may exhibit greater volatility than the earnings for Irish Permanent 's banking business. </p>
+          <p> Further information on the accounting for the life assurance business of Prudential Life of Ireland is set out in the "Guide to certain life assurance technical terms" and on page 35 of the Listing Particular. The assumptions made by the Directors in calculating embedded values for Prudential Life or Ireland are set out in the letter from Bacon <amp> ampersand </amp> Woodrow in Part IV of the Listing Particulars. </p>
+          <head>
+            <hi rend="bold"> Guinness <amp> ampersand </amp> Mahon </hi>
+          </head>
+          <p> On 31 August, 1994, Irish Permanent acquired Guinness <amp> ampersand </amp> Mahon at a cost of <amp> pound sign </amp> 2.1 million and losses before tax of <amp> pound sign </amp> 56,000. At 31 December, 1993, Guinness <amp> ampersand </amp> Mahon had total assets of <amp> pound sign </amp> 99 million, of which <amp> pound sign </amp> 67 million were liquid assets. Customer accounts at that date amounted to <amp> pound sign </amp> 70 million. </p>
+          <p> Irish Permanent intends to provide private banking services through Guinness <amp> ampersand </amp> Mahon. </p>
+          <head>
+            <hi rend="bold"> Restrictions on shareholdings </hi>
+          </head>
+          <p> In compliance with the Act, the Articles restrict any person from having an interest in 15 per cent. or more of the Company 's issued share capital for a period of five years from the date of Conversion. In addition, the Central Bank must approve any transaction involving the acquisition by a person or persons acting in concert of 10 per cent. or more of the voting rights of Shares of Irish Permanent. </p>
+          <head>
+            <hi rend="bold"> Outlook for 1994 </hi>
+          </head>
+          <p> In 1994, Irish Permanent has continued to write profitable mortgages business without relaxing its stringent lending criteria. However, greater competition in the residential mortgage market has resulted in a lower market share for new business and lower net interest margins for the Group. Although trends since 30 June, 1994 lead the Directors to believe that the second half of the year will, as in previous years, reflect a greater level of lending activity, the Directors anticipate that the net interest margin and the results for this period will continue to reflect the competitive situation. </p>
+          <p> Irish Permanent 's performance in retail savings is ahead of budget. Special Savings Accounts and the recently launched Irish Permanent Savings Certificates have proved particularly attractive to investors. As a result of these and other product developments, the Directors are confident that 1994 will show a satisfactory increase in retail deposits. </p>
+          <p> Prudential Life of Ireland and Guinness <amp> ampersand </amp> Mahon will make their first contributions to Group results in the second half of 1994. Prudential Life of Ireland repriced its product range in the early part of the year and is maintaining satisfactory market share. The Directors believe that recent trends in this business indicate that Prudential Life of Ireland will make a satisfactory contribution to Group results in 1994. The Directors believe that the embedded value earnings of Prudential Life of Ireland may be more volatile than the earnings from Irish Permanent 's banking business. The pre-tax results of Prudential Life of Ireland will be accounted for as "Other operating income" and will, therefore, have a beneficial impact on the Group 's cost:income ratio. The Directors expect that Guinness <amp> ampersand </amp> Mahon will report a small loss in 1994. They are, however, confident that Guinness <amp> ampersand </amp> Mahon can be returned to profitability in 1995. </p>
+          <p> The Directors continue to monitor costs closely and expect that operating costs in the second half will be broadly at the same level as in the first half. They continue to target a cost:income ratio of 50 per cent. or below by 1998. </p>
+          <p> On the basis of the taxation charge provided in the six months ended 30 June, 1994 and the outlook for the year, the Directors expect that the taxation charge for 1994 will be materially below the standard rate of corporation tax of 40 per cent.. </p>
+          <p> In the light of results for the six months ended 30 June, 1994 and trading since that date, the Directors believe that the outcome for 1994 will be satisfactory. </p>
+          <head>
+            <hi rend="bold"> Dividends </hi>
+          </head>
+          <p> On the basis of current expectations and in the absence of unforeseen circumstances, the Directors intend to recommend a final dividend of 6 pence per Share (net) for the year ending 31 December, 1994. This is not a profit forecast. No interim dividend has been or will be paid in respect of the current financial year. It is intended that the first dividend paid by Irish Permanent will be the recommended final dividend forecast above. This is expected to be paid in April 1995. </p>
+          <p> For subsequent financial years, the normal policy of the Directors will be to pay interim dividends in October and final dividends in April in proportions of approximately one-third and two-thirds, respectively, of the total annual dividend. </p>
+          <p> On the basis of the above expectations, the annualised dividend for 1994 would be 9 pence per Share (net), equivalent to 12 pence per Share inclusive of the related tax credit at the current rate. This annualised dividend represents a gross yield, at the Offer Price, of approximately 6.67 per cent.. </p>
+          <p> The Directors intend, in the absence of unforeseen circumstances, to pursue a progressive dividend policy which should produce real increases in dividends per Share subject to real growth in underlying profitability. In determining dividend policy, the Directors will have particular regard to the stability of the gross dividend taking into account the related tax credit. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/007.00000</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-006$A">
+          <head>
+            <hi rend="bold"> FOREWORD BY THE MINISTER FOR EDUCATION </hi>
+          </head>
+          <p> The White Paper on Education - <hi> Charting Our Education Future </hi> - published in April, 1995, sets out the key principles and policy directions which will underpin the future development of education in our country into the next century, including the development of university and other forms of higher education. </p>
+          <p> The White Paper articulates the principles and considerations which will underpin the future development of higher education, including the specific principles and considerations relating to university legislation. </p>
+          <p> The White Paper also promised that I would issue a position paper outlining further my approach to legislation for the universities and to the principles underpinning it. This is the position paper. Instead of confining the circulation of the position paper to the universities and the Higher Education Authority, as signalled in the White Paper, I have decided that it should be published and given a wide circulation to all those who are interested and concerned about this important topic. </p>
+          <p> My period in office, as Minister for Education, has been characterised by an openness and a willingness to engage in dialogue and consultation, based on the conviction and the belief that real change and reform in our educational structures and systems will be most effectively achieved through this process. It was this conviction and belief that led me into the extensive, and most valuable, process of consultation which preceded the publication of the White Paper on Education. The publication of this position paper on university legislation is a further and manifest indication of my commitment to openness and dialogue in the formulation and implementation of important policy proposals. </p>
+          <p> We are now in the implementation phase of educational change in this country. The White Paper has set out the policy directions and principles which would underpin this change. This position paper sets out in greater detail the practical implementation of the White Paper principles and policy directions in relation to the important topic of university legislation. This detailed implementation derives from, and is in accord with, the policy directions set out in the White Paper published in April, 1995. </p>
+          <p> Accordingly, this position paper sets out my thinking and that of my Department in relation to the implementation of these policy directions and principles at this time. </p>
+          <p> I would like to acknowledge the advice which has been given to me, through my Department, by the heads of the universities. In all cases this advice was given on a personal basis and it does not imply the agreement, explicit or implicit, of the relevant individuals or institutions to the proposals in this document. The position paper sets out my thinking on the issues involved – but in preparing this paper I have been immeasurably assisted by the constructive advice which has been freely given to me. Niamh Bhreathnach, T.D. Minister for Education </p>
+          <head>
+            <hi rend="bold"> CONTEXT </hi>
+          </head>
+          <p> 1. The Government 's White Paper on education - <hi rend="bold"> Charting Our Education Future </hi> - published in April, 1995, sets out the key principles and policy directions which will underpin the future development of higher education. The White Paper seeks to clarify the role of the state in relation to education and underlines the empowerment of colleges and institutions of education to nurture and promote their particular values, traditions and character and to set out their philosophical approaches to education. </p>
+          <p> 2. The overall policy approach to higher education was set out in the White Paper in terms of seeking to balance institutional autonomy with the needs of public policy and accountability, having due regard to the respective rights and responsibilities of the State and the institutions. A number of considerations are set out, in the White Paper (page 88), which will underpin this approach; </p>
+          <p> the promotion of equality in and through higher education </p>
+          <p> the recognition of the legitimate autonomy of institutions, particularly in relation to determining the educational aims and content of programmes </p>
+          <p> the promotion of the highest standards of quality </p>
+          <p> the preservation of diversity and balance of provision, within the system, while avoiding unnecessary overlap or duplication </p>
+          <p> the development of flexible strategies to meet the expanding and changing demand for higher education </p>
+          <p> the promotion and facilitation of the key leadership role of higher education as a source of social and economic development, together with the need to ensure continuing relevance to the needs of the economy and the promotion of links between institutions and their social and economic environments </p>
+          <p> the continuous development of a framework of accountability for individual institutions and for the higher education system as a whole </p>
+          <p> the provision of an appropriate legislative framework, which affirms well-established values while reflecting the role of higher education in modern society. </p>
+          <p> 3. The White Paper sets out a range of initiatives and policy directions to give practical expression to these principles. Specifically, in relation to legislation, the White Paper contains a specific Government commitment to the introduction of a new legislative framework for universities. This legislation would cover three broad areas. </p>
+          <p> 4. First, it would deal with governing bodies. The White Paper indicates that there would be a broadening of the composition of governing bodies of universities in order to provide for representation from society and the economy. In addition, academic staff, non-academic staff and students would have statutory representation on all governing bodies coupled with appropriate provisions to ensure gender balance on governing bodies. The White Paper indicates that there would be statutory provision for Ministerial nominees on all governing bodies. </p>
+          <p> 5. Second, the White Paper indicates that legislation would amend the National University of Ireland legislation on the basis of proposals put forward by the Senate of the National University of Ireland. </p>
+          <p> 6. Third, the White Paper indicates that more comprehensive legislation for the university sector as whole would also be introduced. The White Paper affirms a number of the principles upon which this legislation will be based namely:-
+                regard for proper institutional autonomy coupled with appropriate public accountability affirmation of the ethos and tradition of universities, together with changes, to reflect the role of universities in modern society preservation of the diversity of universities the enhancement of the developmental role of universities </p>
+          <p> 7. The White Paper also states that the legislation would seek to set out in appropriate form the roles and functions of governing bodies and executive structures respectively. The role of the university president as accounting officer would also be set out. </p>
+          <p> 8. These are the policy commitments in the White Paper. They are now being delivered. </p>
+          <p> 9. The White Paper stated that the minister would issue a position paper outlining further her approach to legislation and the principles underpinning it. This is the position paper. The White Paper envisaged that the position paper would be circulated within the university communities. However, this position paper is being given the widest possible circulation, given the obvious and clear public and widespread interest in this important issue. </p>
+          <p> 10. The position paper builds upon, and seeks to give effect to the policy directions and principles articulated in the White Paper. </p>
+          <p> 11. The White Paper was produced following an extensive, and in many respects unprecedented, process of consultation and dialogue with all the partners in education, including the universities. The National Education Convention was a notable element of the consultative process. The Convention, which included representatives of the universities as well as other concerned interests, discussed the issues involved in future university legislation and there was agreement that legislation should allow for flexibility permitting diversity of structure and practice, and acknowledging the ethos of individual institutions. There is a broad and solidly based foundation of consensus for these fundamental principles and policy directions. This gives considerable grounds for optimism and confidence in the detailed elaboration of these principles and policy directions into specific legislative proposals for the university sector. </p>
+          <p> 12. The commitment to publish a further position paper on university legislation in the White Paper, and now the publication of that position paper, is a manifestation of the Minister 's continuing commitment to consultation, openness and dialogue in the formulation and implementation of policy. An important purpose of the position paper, is to base discussion and dialogue on fact. </p>
+          <p> 13. The legislative proposals for the university sector are indeed significant. They contain the potential to equip the universities as we enter the twenty first century with a new and robust legislative foundation. They also have the potential to lay the ground work for a new, and in many respects innovative relationship between universities and the wider society, including the State. This relationship will be one which respects the autonomy of institutions and the legitimate rights of the wider society. </p>
+          <p> 14. Building from the policy position, principles and directions set out in the White Paper, the following sections of this position paper set out the Minister 's thinking at this time in relation to the implementation of those principles and policy directions and their incorporation into legislation. </p>
+          <p> 15. Detailed legislative proposals will, of course, have to be approved by the Government. When that is done, they will be debated in both Houses of the Oireachtas. </p>
+          <head>
+            <hi rend="bold"> BACKGROUND </hi>
+          </head>
+          <p> 16. The concept and nature of the university have always been dynamic. Many of the early European universities evolved from the monastic centres of learning and the cathedral schools. From their origin in the early medieval period the essential role of the universities, that is the generation of knowledge, the development and dissemination of ideas, the promotion of intellectual debate and the fostering of a critical conscience of society, has developed hand in hand with the increasing importance of universities in economic and social life. Indeed, the increasing dependence of modern societies on knowledge has drawn the universities closer to the centre of economic and social decision-making. This is in itself an appropriate reflection of the role of the universities in generating the knowledge and ideas which are increasingly the basis for the development of our society. </p>
+          <p> 17. This development has been reflected in the history of universities in Ireland from the foundation of Trinity College in 1592 to the establishment of the National University of Ireland (NUI) in 1908 and the setting up of Dublin City University (DCU) and the University of Limerick (UL) in 1989. St. Patrick 's College, Maynooth, which was established in 1795, became a pontifical university in 1895 and a recognised college of the NUI in 1910. The growth and development of the university sector during the twentieth century is reflected in the growth in the numbers of undergraduate students (just over 4,000 in 1920, 6,000 in 1940, 10,589 in 1960 and 48,794 in 1995), an increasing participation rate, a greatly diversified student body, the widening range of adult and community programmes, the significant increase and diversification in postgraduate and research work, the increasing extent of the interaction between the Irish universities and Irish economic and social development through their links with business and industry, their important contributions to the development of policy in many areas of Irish life and the increasing size of the Exchequer contribution to the running of the universities (<amp> pound sign </amp> 172 million in 1995). Throughout this period the Irish university institutions have secured and maintained a high international reputation for the quality of their scholarship and the high standards achieved by their students. </p>
+          <head>
+            <hi rend="bold"> A NEED FOR FRAMEWORK LEGISLATION </hi>
+          </head>
+          <p> 18. Universities, in the role they play in modern society, have come a long way from their early beginnings. Universities, formerly open only to a few, now play a crucial role in society as an integral and mainstream part of our education system. Universities and third-level institutions are acknowledged, nationally and internationally, as key contributors to social, economic and cultural renewal in modern society. Access to university education is no longer the privilege of a few but the realisable objective of many. </p>
+          <p> 19. For our young people, universities, as one of the two major components of our higher education system, fulfil the aspiration for higher learning and personal development, building upon the foundations of primary and second-level schooling. For all age-groups in the community, universities provide an opportunity for lifelong learning and continual intellectual, cultural and artistic growth. For the economy, universities provide a resource of skill, enterprise and innovation to meet the needs of agriculture, business, industry, the professions and the public service. For society as a whole, universities contribute, through research and new knowledge, to the generation of the critical thinking and analysis which is essential in any modern, mature democracy. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/009.00000</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-010$A">
+          <head>  To: The Right Honourable the Lord Mayor, Alderman and Members of the Dublin City Council. </head>
+          <head>  Re: Proposed Variation of the Dublin City Development Plan, 1991 – Dublin Port Tunnel </head>
+          <p>  The Local Government (Planning <amp> ampersand </amp> Development) Act 1963 provides that it shall be the duty of a Planning Authority to take such steps as may be necessary for securing the objectives which are contained in the provisions of the Development Plan. </p>
+          <p>  The Dublin City Development Plan, made by the City Council on 19th December, 1991, contains the following statements which are of specific relevance to the Dublin Port Tunnel concept: </p>
+          <p>  Paragraph 2.2.11  <quote> "There is a necessity to relieve the existing street network of the bad environmental effects from dock traffic.  The economic life of the city suffers from the congestion of commercial transport.  Better Port access is required.</quote>
+          </p>
+          <p>  Residential amenity is seriously effected by the heavy volumes of through traffic from the M1/Airport Road using the streets of residential areas. </p>
+          <p>
+            <quote> The feasibility of constructing a major Port Access and Eastern Relief Route linking the Port to the national road network will be examined." </quote>
+          </p>
+          <p>  Paragraph 3.22.0  <quote> "It is the policy of Dublin Corporation to assist in improving the efficiency of Dublin Port and to seek to improve access to the Port by transferring extraneous Port generated traffic from the City Streets onto suitable alternative relief routes." </quote>
+          </p>
+          <p>  Paragraph 3.22.1  <quote> "It is realised the development of alternative routes for Port related traffic raises environmental difficulties but given the potential benefits for the Inner city such routes must be investigated further.  The provision of such facilities will relieve the City Quays, existing community shopping areas and poor environmental conditions resulting from heavy Port traffic." </quote>
+          </p>
+          <p>  When the City Council made the City Development Plan on 19th December, 1991, it included the following paragraph (14.5.13) in relation to the then proposed Port Access and Eastern Relief Route:  <quote> "The report of the Consultants on the feasibility and environmental impact of a Port Access and Eastern Relief Route will be considered by the Corporation with other relevant studies and initiatives in the transport area having regard to the policy statements in paragraphs 2.2.11, 3.22 and 3.23 of the Plan.  Depending on the findings of the studies a proposal to vary the Development Plan will be considered, if appropriate, by the Corporation." </quote>
+          </p>
+          <p>  The Government decided in November 1992 not to proceed with the Eastern Relief Route element of the proposal, (i.e. the section between the North Port and Booterstown); the study was thus restricted to a feasibility study for the Northern Access Route to the Port.  The Consultant 's report recommended the route now proposed.  This recommendation was noted by An Coisde Cuspoiri Coiteann on 27th July, 1995 and by the City Council subsequently on 4th September, 1995. </p>
+          <p>  During the studies undertaken for the Port Access and Eastern Relief Route, six route options for the northern section, between the M1 and the Port, were considered.  These involved "cut and cover" tunnels, bored tunnels and new surface routes.  Most were rejected because of the adverse environmental effects and prohibitive costs involved.  The route now proposed was preferred for environmental, engineering and economic reasons. </p>
+          <p>  The Route proposed has a total length of 4.6km., approximately 3.5km which will be in tunnel construction.  The implementation of the project is to be accompanied by traffic management measures (including a truck management system) on the lines recommended in the Final Report of the Dublin Transportation Initiative. </p>
+          <p>  The Dublin City Planning Officer Mr. P.F.A. McDonnell, has certified that the principle of such a route would correspond with the 1991 Dublin City Development Plan policies set out in clauses 2.2.11, 3.22 and 3.22.1.  A variation of the Development Plan is accordingly recommended. </p>
+          <p>  The National Roads Authority in its letter of 15th November 1995, when making a formal request to the Corporation to carry out the scheme, stated that it is now Government policy that the scheme should proceed on a priority basis, as an element in the Final Report of the Dublin Transportation Initiative.  The Corporation has engaged, as Consultants for the scheme, the firm of Geoconsult-Arup J.V. </p>
+          <head>
+            <hi rend="italic">
+              <hi rend="underline"> DUBLIN TRANSPORTATION INITIATIVE </hi>
+            </hi>
+          </head>
+          <p>  The D.T.I. Report, having examined a number of options, recommended that a tunnel from the Airport Motorway (north of Collins Avenue) to the Northern Port should be built.  D.T.I. also recommended that its use by cars should be tolled, as a traffic management measure, to ensure that it would have the capacity to carry out its key function, which is access to Dublin Port for heavy goods vehicles. </p>
+          <p>  The current proposal is one of a number of key elements of the integrated DTI Strategy which are:  greater priority to public transport services;  new light rail transport routes and Quality Bus Corridors (QBCs) into the City and upgrading of DART;  major road infrastructure, including completion of the C-Ring and the national road network outside the C-Ring;  traffic management proposals, such as traffic calming and restriction of HGVs from the unsuitable streets and residential areas;  construction of a tunnel, the North Port Access Route (NPAR), re-named the Dublin Port Tunnel, to link the North Port to the M1;  land use policy. </p>
+          <p>  Implementation of this scheme and other elements of the DTI Strategy must take place as an integrated process in order to bring essential economic and environmental benefits to the City.  As an integral part of the DTI Strategy, the proposed scheme seeks to relieve congestion on the City 's streets, assist in enhancing public transport provision and improve environmental quality in the City. </p>
+          <head>
+            <hi rend="italic" />
+            <hi rend="underline"> PUBLIC INVOLVEMENT </hi>
+          </head>
+          <p>  There has been extensive contact with the public in connection with this scheme, including public exhibitions in Whitehall, Fairview and East Wall.  A permanent exhibition continues in the Civic Offices and the Consultative Group set up in response to the motion adopted by the City Council in March 1996 continues its programme of regular meetings.  At the end of September, a total of eleven meetings had been held, involving residents ' groups, elected representatives, representatives from the Consultants <amp> ampersand </amp> Corporation officials. </p>
+          <p>  The concerns expressed by the residents at these meetings are being examined in detail and measures to alleviate these are being considered.  I have every confidence that these genuinely-held concerns, with particular regard to air quality and tunnelling effects, can be addressed satisfactorily. </p>
+          <head>
+            <hi rend="underline"> LEGAL PROCEDURES</hi>
+          </head>
+          <p>  Under the Roads Acts 1993, a motorway development shall not be carried out unless, following the holding of public local inquiry, the Minister has approved or approved with modification a motorway scheme submitted by a Roads Authority. </p>
+          <head>
+            <hi rend="underline"> (i) Environmental Impact Assessment </hi>
+          </head>
+          <p>  The Roads Act obliges a local authority in applying to the Minister for approval for a motorway development to prepare and submit an Environmental Impact Statement to the Minister in respect of the proposed development.  The Minister may then require the road authority to furnish him with specified additional information in relation to the likely affects on the environment of the proposal. </p>
+          <head>
+            <hi rend="underline"> (ii) Motorway Scheme</hi>
+          </head>
+          <p>  Before submitting a motorway scheme to the Minister, the Roads Authority is obliged to publish a notice stating (a) that a scheme has been made, (b) is available for inspection, and (c) that objections may be made in writing to the Minister before a specified date. </p>
+          <p>  The scheme is required to be in a prescribed form and shall specify, (inter alia), any land or rights proposed to be compulsorily acquired or extinguished, planning permissions to be revoked, and these shall be described by reference to a map or maps (where appropriate). </p>
+          <p>  Before approving a proposed road development, the Minister shall consider
+                (a) the Environmental Impact Statement submitted,  (b) any additional information furnished to him,  © any submissions arising from the EIS procedure, made in relation to the likely affects on the environment of the proposed road development, <hi rend="underline">together with, </hi>the report and any recommendation of the person conducting the public inquiry into the proposal, where evidence is heard at such an inquiry in relation to the likely affects on the environment of the proposed road development. </p>
+          <head>
+            <hi rend="underline"> (iii) Development Plan Variation</hi>
+          </head>
+          <p>  In addition to the public participation provided for by statute, by way of both the Environmental Impact Assessment and the Public Inquiry processes, to initiate a draft variation of the Development Plan for the Port Tunnel proposal would afford the public a further opportunity of participating in the process, by making submissions or objections, during the period of not less than three months, during which the proposed Variation of the Development Plan would be on public display. </p>
+          <head>
+            <hi rend="bold" />
+            <hi rend="underline"> VARIATION OF THE DEVELOPMENT PLAN </hi>
+          </head>
+          <p>  The City Council at its March 1996 meeting resolved to defer consideration of the variation process until the publication of the Environmental Impact Statement. </p>
+          <p>  The Environmental Impact Statement (EIS) was published on July 5th and has been on public display since then.  The full text of the EIS has been circulated to all public representatives and to 42 residents associations in the areas affected by the proposal. </p>
+          <p>  The City Council at its adjourned Quarterly meeting on 8th July, 1996, resolved to defer consideration of the initiation of the variation process until its October meeting. </p>
+          <p>  It is now desirable that the questions which have been raised at the Consultative Group level should be presented to a wider forum, and that the general public be allowed to examine and comment on the proposals, in accordance with a statutory procedure, with the objective of establishing the net environmental and economic position for the City, should the project be implemented. </p>
+          <p>  It is therefore recommended that the legal process be initiated for a Variation to the Dublin City Development Plan 1991 [as envisaged by the City Council when it included Paragraph 14.5.13 (see page 2) when making the Plan in December 1991] to provide for the construction of the Dublin Port Tunnel to link the M1 with a North Port Interchange.  The proposed variation must go on public display for a period of not less than three (3) months.  All objections and representations received in this period will be taken into consideration and a report will be issued to the City Council early in 1997.  The City Council can then consider whether or not it is appropriate to vary the Dublin City Development Plan 1991. </p>
+          <p>  The following is a suggested text of a resolution for consideration should it be the will of the City Council to initiate the Variation Process:
+                <quote>  "Dublin City Council hereby resolves to initiate the public display of a draft variation of the Dublin City Development Plan 1991, for the purpose of consulting the general public on the Dublin Port Tunnel motorway proposal." </quote>
+          </p>
+          <p>  J. Fitzgerald </p>
+          <p>  CITY MANAGER </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/009.00001</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-010$A">
+          <head>
+            <hi rend="bold"> </hi>
+            <hi rend="italic" />
+            <hi rend="underline"> DEFINITIONS OF SOME TECHNICAL TERMS ON THE FOLLOWING PAGES:</hi>
+          </head>
+          <head>
+            <hi rend="bold">  SURFACE ROAD:</hi>
+          </head>
+          <p>  Where a road is constructed at or near ground level. </p>
+          <head>
+            <hi rend="bold">  OPEN CUT: </hi>
+          </head>
+          <p>  Refers to the situation where the road is in a trench or cutting, at a lower level than the surrounding ground. </p>
+          <head>
+            <hi rend="bold">  CUT AND COVER TUNNEL:</hi>
+          </head>
+          <p>  Cut and cover tunnels are constructed by excavating a trench from the surface downwards, constructing the floor, walls, and roof of the tunnel in the trench, and then filling the trench in again, and restoring the ground surface. </p>
+          <head>
+            <hi rend="bold">  BORED TUNNEL: </hi>
+          </head>
+          <p>  Bored tunnels are constructed from beneath the ground surface, by excavating and removing the material to the shape of tunnel required, and supporting the surrounding ground.  Different types and methods of tunnel excavation can be used. </p>
+          <head>
+            <hi rend="bold">  GRADE SEPARATED JUNCTION: </hi>
+          </head>
+          <p>  This type of junction occurs when two roads at two different levels are connected. </p>
+          <head>
+            <hi rend="bold">  ROUTE A1 </hi>
+          </head>
+          <head>
+            <hi rend="underline"> Route Description:</hi>
+          </head>
+          <p>  Route A1 would be in open cut at Whitehall and involve a new junction layout at Collins Avenue before continuing in open cut through the grounds of St. Mary 's convent, High Park and Highfield.  Bored tunnelling would be used under Griffith Avenue continuing with 'cut and cover' tunnelling behind Rosmini and St. Joseph 's schools.  Open cut would be used again through the grounds of St. Vincent 's Hospital to Richmond Avenue, with further sections of bored tunnel and 'cut and cover' tunnel under Richmond Avenue, Annesley Bridge Road, through Fairview Park and under the railway line.  The route would then cross the Tolka Estuary on a bridge and continue as a surface road into the North Port. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/010.00000</textSigle>
+            <title>Northern Woman</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Jenny Bristow</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-012$A">
+          <head> PIES WITH A PUNCH </head>
+          <p> A notice in the butcher 's shop window announcing how many days until Christmas jolts the imagination and fills me with that feeling of pre-Christmas entertaining. So often the idea of a pie and a glass of punch party has immense appeal for those who like to entertain but want to keep it fairly casual and simple. </p>
+          <p> I always prefer simple dishes to fussy ones and at this busy time of the year I turn my back on dishes with vigorous demands of split second timing. I have arrived at a selection of pies such as Snap Crackle Chicken; tender strips of chicken tossed in Parmesan cheese and served with slices of aubergine and a rich tomato sauce, or a Crustless Quiche which does not require making and rolling out pastry. Try the Bacon Muffins which go so well with a glass of Mulled Wine punch and create that instant cosy appeal by pulling up a chair and sitting down in front of a Calor gas living flame fire with instant heat and atmosphere at the press of a button. </p>
+          <p> So many of these pies can be made in advance but I remember vividly one day was set aside as the main baking and cooking day. How easy life would have been with the Cannon Classique cooker with two large ovens ideal for the family who enjoys entertaining or have a lot to feed. </p>
+          <p> Punch is always popular and the smell of Mulled Wine punch simmering on top of the hob is wonderful. Don't forget to offer the choice of <sic> an </sic>
+            <corr> a </corr> non-alcoholic drink for those who may prefer it. </p>
+          <head>
+            <hi rend="bold"> Raised chicken and ham pie </hi>
+          </head>
+          <head>
+            <hi rend="underline"> Hot Water Crust Pastry </hi>
+          </head>
+          <p> 170 ml/6fl oz water 115g/4 oz butter 115g/4 oz lard or unsaturated fat 450g/1 lb flour 1 egg yolk 1 tsp salt </p>
+          <head>
+            <hi rend="bold"> Filling </hi>
+          </head>
+          <p>
+            <hi rend="underline"> 450g/1 of cooked chicken pieces 225g/ 1/2 lb cooked ham 225g/ 1/2 lb mushrooms lightly cooked 1 dsp chopped parsley salt, pepper, pinch cayenne pepper </hi>
+          </p>
+          <head>
+            <hi rend="bold"> To make the pastry </hi>
+          </head>
+          <p> This quantity makes enough to line a 1.41 (2.5 pint) mould or 200mm (8 in) cake tin. </p>
+          <p> Warm the mixing bowl and sieve the flour and salt into it. Make a well in the centre and hide the egg yolk in the flour. Heat the butter, lard and water in a saucepan, and when boiling make sure that the fat has melted before boiling point is reached. Pour into the flour and egg, mixing well with a spoon or knife. When the dough has cooled slightly turn onto a floured surface and knead until the pastry is smooth. It is a good idea to cover the pastry with cling film and leave it to rest at this stage for 15-20 minutes. Then use two-thirds to line the pie dish (keeping one-third for the topping) pressing firmly into the tin. </p>
+          <p> Pack the cooked chicken, ham and mushrooms well into the tin, brush the top edge on the pastry with beaten egg, place the rolled-out third of pastry on top, and, using fingers, seal well on top. Decorate with pastry leaves, and make a hole to allow the steam to escape. Bake at gas 5 for 30-35 minutes. </p>
+          <head>
+            <hi rend="bold"> Crustless Quiche </hi>
+          </head>
+          <p> A very easy and quick dish which does not involve the making and rolling of pastry. A variety of fillings can be used. </p>
+          <p>
+            <hi rend="underline"> 170g/6ozs self-raising flour 55g/2ozs bran 6 eggs 1/4 teaspoonful salt 85g/3ozs unsaturated margarine 425 ml/ 3/4 pint of milk 1 large onion finely chopped 115g/4 ozs mushrooms 1 small tin salmon 225g/8ozs broccoli frozen Sprinkling of dill and freshly milled black pepper Grated cheese to flavour and garnish </hi>
+          </p>
+          <p> Sieve the flour and salt into a large bowl, then rub in the margarine. Add the bran. Whisk the eggs, milk and cheese mixing well with the salmon and broccoli. The onion and mushrooms can be slightly cooked in the pan before also adding at this stage. </p>
+          <p> Grease a quiche dish, then mixing well pour mixture into the dish and bake in the middle shelf of a preheated oven gas mark 5 for 30 minutes until golden brown and well risen. Cut and serve hot or cold with wedges of lemon. Good with tomato and basil salad. For extra flavour, try a sprinkling of dill and freshly milled black pepper. </p>
+          <head>
+            <hi rend="bold"> Turkey and Almond Crumble with Crisp Celery </hi>
+          </head>
+          <p> The secret of success with this dish is in the careful making of the buttery breadcrumbs. The addition of a crisp layer of celery gives this dish an element of surprise. </p>
+          <head>
+            <hi rend="bold"> Crumble Topping </hi>
+          </head>
+          <p>
+            <hi rend="underline"> 8 slices white bread, crusts removed 55g/2oz butter 1/2 tsp salt 1/2 tsp ground mace 115g/4oz flaked almonds 1 head celery 3 tablespoons chopped parsley </hi>
+          </p>
+          <head>
+            <hi rend="bold"> Sauce </hi>
+          </head>
+          <p>
+            <hi rend="underline"> 55g/2oz butter 55g/2oz plain white flour 850 ml/1.5 pints milk 1 chicken stock cube 55g/2oz grated cheese (Parmesan) 450g/1 lb turkey or chicken pieces 1/2 tsp mustard </hi>
+          </p>
+          <p> Cut the turkey into bite sized pieces and arrange in a large fairly shallow ovenproof dish. Cooked turkey can be used for this dish but if using uncooked turkey or chicken lightly fry in a pan ensuring the flesh is well cooked and a light golden brown. </p>
+          <p> Next make the sauce, melt the fat in a pan, add the flour and blend well with the milk and blended stock cube (dissolve in 2-3 tbsp boiling water) bring to the boil and simmer gently for 1-2 mins. Add the grated cheese and mustard then pour over the turkey pieces. </p>
+          <p> Finally make the crumble topping. Melt the butter in a saucepan then add the salt, mace, breadcrumbs and almonds and cook for two mins until the crumbs become well coated and golden brown. </p>
+          <p> Layer the celery over the turkey and sauce and then finally sprinkle the crumble topping over the celery. Bake in oven gas mark 5 for 25-30 mins. Serve piping hot garnished with freshly chopped parsley. </p>
+          <head>
+            <hi rend="bold"> Bacon Muffins </hi>
+          </head>
+          <p> These are delicious served warm with a glass of hot mulled wine. </p>
+          <hi rend="bold"> Makes about 14. </hi>
+          <p> Preparation time: 20-25 mins Cooking time: 35-40 mins Oven setting gas 5 <hi rend="underline"> 85g/3 oz back bacon 340g/12oz self raising flour 2 tsp baking powder 1 tbsp chopped parsley 2 eggs, size 2, beaten 115g/4oz butter, melted and cooled 140ml/ 1/4 pint milk </hi>
+          </p>
+          <p> 1. Cut the rind and excess fat off the bacon and finely chop the meat. 2. Sieve the flour and baking powder into a bowl. 3. Stir in the chopped parsley and lightly cooked bacon. 4. Pour in the beaten egg and melted butter. Beat well, adding enough milk to form a dropping consistency. 5. Spoon the mixture into 14 muffin tins or deep patty tins. Bake in a preheated oven for 20-25 mins gas 4. Serve warm. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/010.00001</textSigle>
+            <title>Northern Woman</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Jenny Bristow</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-012$A">
+          <head> The Big Apple </head>
+          <p>
+            <hi rend="bold"> There are few things to match the sweet flavour and crunch of home grown apples – whether they be eaters or cookers. I like to use eaters in many desserts as they are less tart and more aromatic. However, they can be difficult to puree down so a good whizz in the processor may be needed. Apples combine so well with other savoury ingredients such as nuts, blackberries and elderberries for tarts, pies, puddings and crumbles or with plums, damsons, onions and tomatoes to create chutneys and relish which bring that wonderful aroma of autumn in the kitchen. To preserve the flavours of apples in liquid form try apple cordial – not quite so potent as Joe Grundy from the Archer 's home brew. As well as for drinking it 's such a good choice to use when poaching apples and berries. Remember when buying apples, big does not always mean best and I find the medium sized ones have a better flavour. As a rule, three apples should weigh about a pound. If you can't keep up with the abundance of fruit in late autumn then apples freeze extremely well for up to six months. Peel, core and slice them thickly, blanch in boiling water for just 1 minute. Drain, then plunge into cold water and pack either in rigid containers or polythene bags, dusted with a little sugar. Making chutney is easier than jam making, but the secret lies in long steady cooking which should never be over-boiled. Cooking with CALOR GAS gives a good steady flame which is rapid and easy to regulate to ensure this even cooking. Chutneys improve greatly with maturity, so store at least one month before using. Enjoy the fruits of this wonderful season and remember, an apple a day keeps the doctor away as effectively in apple cordial, chutney or even baked apple sponge! </hi>
+          </p>
+          <p>
+            <hi rend="italic"> Please turn page for more recipes </hi>
+          </p>
+          <head>
+            <hi rend="bold"> Apple cordial </hi>
+          </head>
+          <p> This mildly flavoured cordial can be stored in screw top bottlers and diluted. I find it invaluable to add a concentrated apple flavour if roasting pork or duck. </p>
+          <p> 35kg/31b apples juice of one lemon 285/10 oz granulated sugar 1/2 tsp citric acid 570ml/1 pint water </p>
+          <p> Choose those firm rosy apples if you can for this cordial – they will give it a much nicer flavour and colour. Wash and dry the apples, then chop up, but be careful to remove any blemishes which may be found on overripe apples. </p>
+          <p> Place in a large bowl, cover with water and lemon juice and leave to soften, stirring occasionally. Cover and leave for 24 hours. </p>
+          <p> Transfer to a heavy based pan and simmer until the fruit becomes soft. Transfer to a jelly bag or a sieve lined with muslin and strain. Do not speed up the process or the cordial will become cloudy. </p>
+          <p> Return the strained juice to a saucepan, add the sugar and citric acid, and bring to almost boiling point and when the sugar has dissolved, leave to cool, then bottle. </p>
+          <p> This cordial should store in the refrigerator for up to one week. </p>
+          <head>
+            <hi rend="bold"> Blackberry and apple pie </hi>
+          </head>
+          <p> Sweet Pastry: 285g/10 oz plain flour 55g/2oz caster sugar 200g/7 oz sunflower <sic> margerine </sic>
+            <corr> margarine </corr> or softened butter 1 egg yolk Filling: 450g/1 lb cooking apples, peeled, cored and thinly sliced 125g/4oz blackberries 55g/2oz demerara sugar 1/2 tsp cinnamon or cloves 2 dsp cider or apple juice or water to brush pastry one egg (Serves 8) </p>
+          <p> To make the pastry sieve the flour into a bowl, add the softened fat, cut and rub through. Add the caster sugar and egg yolk to mix to a soft dough. Cover the pastry with cling film and leave to relax and firm up in the fridge for at least 1/2 hour. </p>
+          <p> Put the apple juice, demerara sugar and spice into a saucepan and heat. Add the apples and cook for 1-2 minutes stirring to coat and soften the apples. Add the blackberries and leave to cool. </p>
+          <p> NB If the berries are ripe and full of juice then the addition of 1/2 oz cornflour to the fruit will help to prevent the pastry becoming soggy during cooking. </p>
+          <p> Roll out two thirds of the pastry and use to line an eight inch pie dish. Brush the base of the pastry with beaten egg to seal it during cooking. Add the apples and blackberries, draining off some of the juices. </p>
+          <p> Roll out the remaining third of pastry into a circle eight inches in diameter. Brush the pastry edges with beaten egg, and place on the pastry top. Seal the edges together. </p>
+          <p> Brush with beaten egg again and bake at 375F, 190C, gas mark 5 for 20-25 minutes until golden brown. </p>
+          <p> Serve dusted with caster sugar. </p>
+          <p> If liked the pastry for the top of this pie can be cut into narrow strips and latticed across the top. </p>
+          <head>
+            <hi rend="bold"> Very Irish Potato Apple Cake </hi>
+          </head>
+          <p> This is a very traditional Irish dish, and one I often make as a comforting snack. I like to serve this slightly buttered and dusted with caster sugar. The cake tastes even better if you warm them in the oven until the butter is melted. </p>
+          <p> 225g/1/2 lb cooked potatoes 1/2 tsp salt 50g/2 oz flour 2 cooking apples peeled and finely diced 1 dsp lemon juice 30g/1 oz demerara sugar 1/2 tsp cinnamon butter and caster sugar to serve 30g/1 oz melted butter to spread on top </p>
+          <p> Into a bowl place the chopped apple, cinnamon, demerara sugar and lemon juice. Cover and leave to sit, and prepare the potato cake. This dish is easier to make if the potatoes are still warm. </p>
+          <p> Cook and finely mash the potatoes. Add the salt and pepper and gradually work in the flour until the dough becomes very pliable. On a floured board, roll out the dough 1/4 inch thick and cut into circles about 3 <amp> inches sign </amp> in diameter. </p>
+          <p> Cover one round with the apple mixture, damp the edge and cover with the second piece. Seal the edges with a fork or pinching with your fingers. Cook on the griddle until golden brown. Alternatively this dish can also be cooked in the oven, gas mark 4/190C/375F for 20 minutes. </p>
+          <head>
+            <hi rend="bold"> Braised Hot Pickled Red Cabbage with Apples </hi>
+          </head>
+          <p> 1 medium red cabbage, shredded 350g/12 oz cooking apples, peeled and sliced 1 onion finely diced 115g/4 oz demerara sugar 570 ml/1 pint water or vegetable stock 1/4 pint red wine 2 dsp cider vinegar 1 dsp cooking oil 50g/2 oz raisins pinch salt and pepper </p>
+          <p> In a large pan saute the onions in the oil, add the cabbage, apples, sugar, salt and pepper and toss. Next add the stock, red wine, cider vinegar and stir well. Place the lid on the pan and simmer gently for 60-80 minutes until tender. This dish can also be braised in the oven. Ten minutes before serving, add the raisins, allowing them to plump up nicely before serving hot. </p>
+          <head>
+            <hi rend="bold"> Autumn Apple Chutney </hi>
+          </head>
+          <p> This chutney brings the flavours of autumn together in a mouthwatering way. </p>
+          <p> 450g/1 lb apples, cored and diced 225g/1/2 lb tomatoes chopped 450g/1 lb plums, stoned and diced 1 crushed clove of garlic 280ml/ 1/2 pint distilled vinegar 225g/ 1/2 lb demerara sugar 225g/ 1/2 lb golden sultanas 1 tsp each mixed spice and ginger </p>
+          <p> Prepare the fruits and place in an aluminium pan with all ingredients except the sugar. Simmer gently for 10 minutes, then reduce the temperature and add the sugar, stir until the sugar has dissolved, then simmer gently until the chutney shows signs of thickening. Cool, then pack into clear, sterile jars. Makes approx 4 lbs. </p>
+          <head>
+            <hi rend="bold"> Baked Apple Pudding </hi>
+          </head>
+          <p> One of my favourite autumn puddings, which combines the flavour of old-fashioned, simply baked apples with toasted almond sponge. </p>
+          <p> Vanilla sauce makes a lovely accompaniment. </p>
+          <p> 115g/4 oz butter or margarine 115g/4 oz soft brown sugar 3 eggs, lightly beaten 115b/4 oz self-raising flour 85g/3 oz lightly toasted ground almonds 8-10 whole cloves 4-6 small rosy eating apples rind of one lemon </p>
+          <p> To make the cake mixture, cream the fat and sugar until soft and fluffy. Whisk the eggs into the butter and sugar lightly but thoroughly, a little at a time. </p>
+          <p> Whisk in the grated lemon rind and mix in the toasted ground almonds, cloves and self-raising flour. </p>
+          <p> Transfer to a lightly greased serving dish and arrange the apples in the sponge mixture, then bake at 180C/350F Gas Mark 4 for 25-30 mins until cooked. Serve hot with vanilla sauce. </p>
+          <head>
+            <hi rend="bold"> Vanilla Sauce </hi>
+          </head>
+          <p> 1 vanilla pod or few drops of vanilla extract 30g/1 oz caster sugar 4 egg yolks 570ml/1 pint milk </p>
+          <p> Place the vanilla pod with the sugar and leave the flavour to impart (at least 30 mins). As an alternative, a few drops of vanilla extract can be added to the sugar and left for the same length of time. Beat the eggs and sugar together until smooth and creamy. Warm the milk in a saucepan and pour over the eggs. Mix well and return to the saucepan. </p>
+          <p> Over a very gentle heat stir until the sauce is thick enough to coat the back of a spoon. It is important to keep the temperature low during the making of this sauce, otherwise it will curdle. Serve warm. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/015.00000</textSigle>
+            <title>Italian Spinone Club of Ireland</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Colm Timmins</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-016$A">
+          <head> MESSAGE FROM THE CHAIRMAN: </head>
+          <p> Well the shooting season is over and the show season is now upon us. I hope everyone will have an enjoyable year whether you are showing, training or just learning a little more about your Spinone. The Committee are at present working on a programme of events for 1995. We have had a very positive reaction to the idea of a Spinoni Weekend and we also have our Club Show in July. We hope as many people as possible will participate. Details will be forwarded to all members in due course. </p>
+          <p> Many thanks to Ms. Linda Collins and Mr. Steve Kimberley for their articles for the Newsletter it is great to have such good input from our overseas members. Thanks must also to go Ciara for her poem and my other half for struggling to put the whole thing together. Typing is definitely not her greatest talent! Despite threatening divorce, coffee addiction, and an unbelieveable line in expletives she met the deadline. </p>
+          <p> So please folks get on your thinking caps, put pen to paper and <sic> let </sic>
+            <corr> let 's </corr> hear from you for our next Newsletter for the Club Show. I want to live a long and happy life!! </p>
+          <p> Please note that any statements or opinions expressed in this Newsletter do not necessarily reflect the views of the Officers and/or the Committee of the Club. The Officers and Committee therefore do not accept responsibility for any comments, views or expressions contained in this publication. COLM TIMMINS </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/015.00001</textSigle>
+            <title>Italian Spinone Club of Ireland</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Colm Timmins</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-016$B">
+          <p> Dear Members, Well <sic> its </sic>
+            <corr> it 's </corr> a bit rough and ready but I hope despite the obvious typographical errors you enjoy our first attempt at a Newsletter. Thank you to those who contributed and Colm for the layout and printing. I hope you will all seriously consider giving some input whether lighthearted or serious for the next edition which we hope to produce in time for the Club Show in July. </p>
+          <p> If anyone has any problems or queries re the Breed please feel free to contact any of the Officers or Committee. We will all be happy to help you in any way we can. </p>
+          <p> Many of you may not be aware that next year marks the tenth anniversary of the Irish Kennel Club 's recognition of the Italian Spinone. I hope we will be able to produce a concise history of the Breed in Ireland to mark the event. In the meantime perhaps a brief outline of the bloodlines in this country would be of interest. </p>
+          <p> The first Spinone imported into Ireland from the U.K. was Stowlodge Sorrento born 29/12/'85, next was Stowlodge Serenata born 1/10/'86 and in 1988 Stowlodge Sirius born 18.1.'88. All were owned by Mr. Finn Cuthbert (Drackett). It was the two matings of Stowlodge Sirius and Stowlodge Serenata that produced the foundation stock for the Colheath and Sharpshot Spinoni along with the litter bred by Mr. J. Hawthorne in April '93. </p>
+          <p> Until the three litters born in '94 (see review of '94) there have only been two matings that introduced new bloodlines into our stock in this country. The first mating was Drackett Anika ex Colourbox Hell Oh producing the first litter to the Colheath kennel in April '93. The second mating was Mr. J. Hawthorne 's Drackett Armedia exNantiderri Fit the Bill which was imported by Mr. John Wallace, producing a litter also in April '93. </p>
+          <p> In the past nine years there have only been eight litters bred in Ireland so it would be fair to say that the breed is still in its infancy here. It is therefore up to us to ensure we maintain all the finer qualities of the breed as we head into the next decade. We should be proud that over 80 <amp> per cent sign </amp> of Italian Spinoni in Ireland are working gundogs and therefore truly fulfil the Dual Purpose qualities of the breed. HEATHER TIMMINS (Colheath) </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/015.00002</textSigle>
+            <title>Italian Spinone Club of Ireland</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Colm Timmins</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-016$B">
+          <head> REVIEW OF THE YEAR 'S EVENTS DURING 1994 </head>
+          <p> On February 20th '94 the inaugural meeting of the Italian Spinone Club of Ireland took place. The aims of the Club are to provide information, support and encourage comradeship for Spinone owners or those who hold an interest in the Breed. In October of '94 the Club became officially affiliated to the Irish Kennel Club Ltd. </p>
+          <p> It really proved to be an excellent year for the Breed in Ireland. We were really pleased to welcome several new exhibitors from England and Scotland, we would like to congratulate one of those exhibitors in particular on her achievements. Mrs. Laurie Craig whose dog Wynsett Steady Under Fire at Baillieston was the top winning Spinone here for 1994 and achieved the title Annual Champion '94 under I.K.C. Rules. </p>
+          <p> Mrs. Marie Fox from Cornwall also achieved top honours when her dog Colheath Noble Fir won Best of Breed at the first official Club Show. 'Flint' was also pulled in the final line up for Gundog Puppy at St. Patrick 's Day last year. </p>
+          <p> However, the highlight of the year for me personally came in June when my bitch Drackett Athena bred by Mr. Finn Cuthbert became the first IR. SHOW CHAMPION SPINONE and truly earned her place in any history of the Breed here. </p>
+          <p> We also look forward to seeing a new generation of Spinoni in the field and show ring this year following the birth of three litters in 1994. The first in September to Mr. Peter Brannigan 's Beanie 's Belle ex Drackett Alban, the second in October to my own Sh. Ch. Drackett Athena ex An. Ch. Wynsett Steady Under Fire at Baillieaton and finally to mark a perfect end to the year a Christmas litter to Joyce Ruigrok <amp> ampersand </amp> Dan Delaney 's Inostricani Rossa ex their Drackett Alban. </p>
+          <p> It must also be noted that this year perhaps more than any other there has been an incredible interest in the working abilities of the Spinone and full credit must be given to those owners who rough shoot with their dogs and promote the Breed through that <sic> closness </sic>
+            <corr> closeness </corr> between handler and dog this does more to promote the abilities of the Spinone than any written word.</p>
+          <p> HEATHER TIMMINS (Colheath) </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/015.00003</textSigle>
+            <title>Italian Spinone Club of Ireland</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Colm Timmins</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-016$C">
+          <head>
+            <hi rend="bold"> INSIGHT INTO TRAINING THE ITALIAN SPINONE</hi>
+          </head>
+          <p> Dear Members, Well I have been scratching my head since being asked to write about the training of the Spinone, trying to find areas which would interest non-working owners. </p>
+          <p> Firstly I will outline very briefly my involvement with gundogs. I started over 14 years ago training Springers having reasonable success in tests, then due to a change in my shooting I moved to Labs, once again having success in tests. I still run both breeds both for myself and handling dogs on occasions for other people I have trained dogs for friends and to date, not had any comebacks as to their performances. I moved to Spinones because I felt other breeds were being overbred and spoiled for monetary gains. </p>
+          <p> I have <corr> at </corr> long last found a breed which is being cared for in the correct manner. It would be a shame to see this breed go the same way through lack of careful and select matings. We must all insist that hip scoring and eye checks are carried out to ensure we all maintain a happy and healthy breed. I am so impressed by the Spins nature and work, I don't require to look elsewhere for a good companion and worker. </p>
+          <p> Now that I have bored the pants off all of you, please allow me to give some hard earned advice to future trainers and handlers. </p>
+          <head> TRAINING TIPS </head>
+          <p> 1. Do not start serious training until your pup is at least 6 months plus. (Take your time don't rush, remember it 's better to take your time and have a well trained dog which is going to last 10 years, than a monster, which is a pain in the bum for the rest of <sic> it's </sic>
+            <corr> its </corr> natural life. </p>
+          <p> 2. Do not allow your pup to retrieve sticks and stones, this very often causes hard mouth. Also don't play tug of war, you will only regret it, especially when your clever Spin brings in <sic> it's </sic>
+            <corr> its </corr> first retrieve – you can't get much meat off a pair of pheasant wings whichever way you cook them. </p>
+          <p> 3. Do not enforce walking to heel as this will only make if difficult when you expect your dog to leave your side to start hunting. </p>
+          <p> 4. <sic> Don </sic>
+            <corr> Do </corr> not try and force your pup to quarter for too long, this is a sure way of turning him into a plodder. </p>
+          <p> 5. Do not take your pup to ground which has large amounts of rabbit scent, or you'll turn it into a hoover. Remember these <sic> air </sic>
+            <corr> are </corr> scenting dogs. </p>
+          <p> 6. Just because Spins are gundogs it doesn't mean they enjoy having a gun fired over their heads. This is something which takes time and patience. </p>
+          <p> 7. POINTING is something which very often happens over-night. Very careful monitoring of your pup as he starts to give any indication of pointing, needs to be encouraged once it starts. This generally begins with slight pointing, once your <sic> pups </sic>
+            <corr> pup </corr> stops and stands still, quietly walk up alongside him. Do not approach along the line of the pups behind, this will often spook him, always approach from the flank, this way you won't upset the pup. When you 're alongside softly repeat the command 'HOLD', at the same time gently stroke the <sic> pups </sic>
+            <corr> pup 's </corr> stomach, this has a soothing <sic> affect </sic>
+            <corr> effect. </corr>  When the pup is contented carefully raise his tail if not already done, bear in mind, the tail should only be in line with its back. After a short length of time flush the object being pointed by any means available to you. A word of warning do not try for the world record in pointing, as you will only encourage faults such as shaking, tail twitching or even worse moving in before being told to do so. </p>
+          <p> WATERWORK should be done at the <sic> pups </sic>
+            <corr> pup 's </corr> pace. Never get frustrated enough to throw a young dog into the deep end expecting it to swim like a fish, all you will do is scare the dog for life. </p>
+          <p> I hope this hasn't been too boring for you all, as you can imagine there is a lot more to gundog training than meets the eye. It 's not as horrendous a picture as I may have painted it. There 's always a bright side to it, and nothing is more embarrassing than when at the end of a hard <sic> days </sic>
+            <corr> day 's </corr> trailing the judge asks your dog to make a <sic> reasonable </sic>
+            <corr> reasonably </corr> difficult water retrieve, your faithful hound looks up at you and blatantly yawns before <sic> sawntering </sic>
+            <corr> sauntering </corr> down to the water leisurely swims out and back makes his delivery looks at the judge and yawns again. Who could ask for more? </p>
+          <p> So come on folks have a 'go'! STEVE KIMBERLEY </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/015.00004</textSigle>
+            <title>Italian Spinone Club of Ireland</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Colm Timmins</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-016$D">
+          <head>
+            <hi rend="underline"> Preparing an Italian Spinone </hi>
+          </head>
+          <p> How to start the task of preparing your Spinone. First of all start with a clean dog. Yes, he can have a bath! This should be done a week before the show. Beard and legs can be rinsed the night before For hand stripping your dog the best tool and the cheapest of course, is finger and thumb, a good stripping comb and thinning scissors. NEVER USE STRAIGHT SCISSORS </p>
+          <head> THE HEAD: </head>
+          <p> Start with the head. The skull and occiput should be short and smooth. Gently strip towards the back skull and from the outer corner of the eyes to the beginning of the cheek. The eyebrow should be combed through, then gently strip out any over hanging brow. I have never found it necessary to trim the beard. If you use a fine comb regularly this keeps it in trim. However, this can be kept tidy with thinning scissors. EARS must also be kept tidy. They are set on level with the eyes, triangular in shape, slightly rounded at the tip, hanging no more than two inches at the jaw line. You can have a surplus of two inches or more hanging from the ears – this needs to come off. </p>
+          <head>
+            <hi rend="underline"> THE NECK: </hi>
+          </head>
+          <p> The Spinone is known for growing a lion 's ruff around the neck and shoulders. If this is not stripped out this can give the impression of no neck at all. Hand strip down the neck and shoulders. The dewlap should also be clean and tidy. Continue down from the shoulderblades and onto the back towards the tail. </p>
+          <head> THE TAIL: </head>
+          <p> The tail should be carried out or down. If your Spinone carries his tail high the last thing <corr> you </corr> want to see is a flag hanging from it. </p>
+          <head> LEGS: </head>
+          <p> Forelegs should be straight, bone oval, strong well defined tendons. Elbows neither turning in or out, pasterns slightly sloping when viewed from the side. If your Spinone has got all this why cover it with excess hair and fringing? The Standard says the coat should be shorter on the front of the limbs and on the feet. The same goes for the hindquarters. Particular attention should be made to keeping the elbows and hocks tidy, also the stifle. The Standard does not ask for exaggeration on this point, so again long fringing should not be left on. This includes the underline which should not be fringed excessively. Finally feet – front compact and round, hindfeet slightly oval, toes arched, covered with short hair especially between the toes. Nails strong and arched. If you find this area difficult to strip out it can be done with thinning scissors. </p>
+          <p> The preparation of your Spinone should not be done in haste. Do a little at a time so he does not get bored and you don't make the mistake of taking off too much. The end result will be worth it. By LINDA COLLINS (WYNSETT) </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/016.00000</textSigle>
+            <title>Elegant Northern Ireland</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maeve Watt</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1998</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-013$A">
+          <head> Forever Flowers </head>
+          <head> By Maeve Watt </head>
+          <p>
+            <hi rend="bold"> Frances Brown from Newtownards has always loved flowers and she started flower arranging ten years ago, beginning with leisure classes and was then encouraged to do her City and Guilds part 1 and 2. She enjoyed it so much that she decided to teach, got her qualifications and at the moment is teaching in Bangor Tech. </hi>
+          </p>
+          <p> "I REALLY LOVE TEACHING, SEEING OTHER <sic> peoples </sic>
+            <corr> people 's </corr> work. I am learning all the time too." She also loves competitive work where there 's a show and the entrants are given a title. "You have to interpret the title in flowers and my most recent piece, The Flower Fairies, won up in Antrim. I had to compete again in England and won – the prize was a nice weekend in Glasgow which was great, except that it rained constantly!" </p>
+          <p> Frances also competed in the World Show where she was runner up and won <amp> pound sign </amp> 500 towards going to South Africa to represent Northern Ireland. "I was absolutely thrilled. It 's in February and I have to do an exhibit connected with Northern Ireland. I 'm working on it at the moment," she laughs. "But it 's a secret! There 's a World Show every four years, the last one was in New Zealand and the next one is in Edinburgh, so Frances is delighted to be going to South Africa! "It 'll be a wee bit nerve wracking getting everything over there. If you take anything from here, there are pest controlled regulations and even material has to have a fire proof certificate. Obviously, as I will be depicting something from Northern Ireland, I 'll have to take some stuff over, but you can order flowers there and I 'm busy working the whole thing out at the moment. The plane will be filled with flowers!" We wish her luck! </p>
+          <p> Over the years, everything grown in her garden has been converted for flower arranging. If I 'm doing a wedding, it 's great to be able to go and cut stuff from the garden, nice and fresh, it also keeps the cost down a little," smiles Frances. And there 's a lot to learn in flower arranging, it moves on from fashion to fashion and Frances has to make sure that she keeps abreast of the new trends – including dried flower arrangements. </p>
+          <p> "There are different ways of drying and preserving flowers too – you can <corr> get </corr> glycerine leaves and silicone gel flowers and, of course, some flowers dry naturally." Her favourite flower is probably the rose because it can be dried as well. They must be picked just before full bloom on a nice dry day and hung upside down in a dark, warm place for about a fortnight. Red and yellow roses are the best colours to dry. Frances has a tip for beginners. "The best thing to do is to try to compete, starting off in the novice section. The best way to learn is on the show bench where you will get comments from judges and also see other <sic> peoples </sic>
+            <corr> people 's </corr> work. "It 's so enjoyable," she laughs, "You may not always win, but at least if you make a mistake, you 'll know the next time! Frances Brown believes that a bowl of flowers brings a room completely to life and that a room without flowers or plants, is dead. </p>
+          <p> With Christmas dinner parties starting to fill up the calendar, Frances has put together a step-by-step guide to creating three very different flower arrangements, guaranteed to brighten up any table setting. </p>
+          <head> FLOWERS AND FRUIT </head>
+          <p> THE PLASTIC DISH containing a soaked oasis which has been taped down and is sitting in the middle of a vine ring. Just to keep the furniture dry, the ring is lying on a base of cork (1). </p>
+          <p> Frances puts a candle in the centre and round the bottom, she has taped on some kebab sticks so that they will go into the oasis and keep the candle in place. </p>
+          <p> She is going to use apples, grapes, cones, a pretty tartan ribbon and some little bundles of twigs, some spray carnations and foliage – not anything with a soft leaf that would have to be replaced in the warmth, but ivy and holly which will last a long time. Spray carnations will last longer than most flowers over the Christmas period. </p>
+          <p> The ribbon has wired edges to it which makes it sit up nicely and Frances just loops it four times, backwards and forwards before putting a wire tightly round the centre, making sure the wire is extended so that it can go into the oasis. She cuts the end of the ribbon in a vee shape to make it more attractive. </p>
+          <p> Secure the apples with kebab sticks into the stem end which will help it sit in the oasis. Put in the candle and the outline of the foliage making sure that the foliage is dipping down because it has to cover the oasis. Put in the apples and grapes which have been wired, on opposite sides and remember to clean the stems of the foliage before use (2). </p>
+          <p> Frances uses different foliage including Skimmia, turning the arrangement round all the time to make sure the oasis is hidden. </p>
+          <p> She places the flowers, layering them so that there is a pocket of flowers on the opposite sides of the fruit to balance the colour (3). </p>
+          <p> Cones are added to finish it off and little pieces of foliage, berries and small bundles of sticks to make it more interesting (4). </p>
+          <p> Always make sure there is enough water in the dish to soak into the oasis and spray the arrangement daily to keep it fresh and alive. </p>
+          <head> RING OF ROSES </head>
+          <p> USING AN OASIS RING which has been soaked in a basin of water (turn the ring upside down and let it soak until the bubbles stop coming out) Frances sets it on a brass tray so that when she waters it, the water doesn't escape onto the top of the table (1). </p>
+          <p> She uses gold coloured slimline candles in three different placements with a ribbon (wire edged again) at the base of each one. She also uses artificial gold balls, again in three different placements (2). </p>
+          <p> The candles are placed at different levels and the flowers used are rich red roses. Covering the oasis in conifer, turning it round all the time and also placing the foliage on the inside of the ring and on the top so that it is entirely covered (3). </p>
+          <p> She also uses variegated holly – the lime green colour goes well in arrangements as it lifts the colour. Frances picks all the foliage apart from the Skimmia, from her own garden. </p>
+          <p> She adds some red berries and some red roses to distribute the colours throughout the design (4). (If the roses flop, you can recut them and place the ends in boiling water for half a minute and then float them in a basin of water. They should perk up again!) </p>
+          <p> Frances finishes this arrangement by adding ivy leaves which have nice shiny surfaces to cover the oasis. </p>
+          <head> GLAMOROUS GOLD </head>
+          <p> PUTTING THE SOAKED OASIS into a container that has a spike in the end of it like a candle holder, push it down into the top of a glass container with a piece of gold lame material to wind round it (1). This arrangement is really for a buffet table. </p>
+          <p> Frances is going to use white silk poinsettias trimmed with gold and some golden fruit, apples and pears, white September flowers to do the outline and a gold rope with tassels. She drops the material round the glass, tucking it in at the bottom. Frances likes using candles in table arrangements because they 're pretty to look at when eating and for this arrangement, she has used the slimline candles. </p>
+          <p> She does the outline with the September flower and some lovely trailing ivy with a few variegated leaves towards the centre. The rope is then dropped down the glass over the material (2) and a cherub is added. His wings have been wired so he can rest in the middle of the arrangement. </p>
+          <p> Frances fills in the design with poinsettias and foliage – you can bend silk flowers which makes them easier to use. She adds some gilded fruit (3). This arrangement, whilst looking extremely elegant, is reasonably easy to assemble. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/016.00001</textSigle>
+            <title>Elegant Northern Ireland</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maeve Watt</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1998</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-013$A">
+          <head> Colour Perfect Maeve Watt </head>
+          <p>
+            <hi rend="bold"> Colour has a powerful <sic> affect </sic>
+              <corr> effect </corr> on our lives and about 60 years ago, it was discovered that the colours we wear have a real influence on the appearance of our complexion. Now known as Personal Colour Analysis, this service is available throughout the world to men and women who care about projecting a positive image, who care about getting it right. </hi>
+          </p>
+          <p> THE COLOUR CLASSIFICATION is based on the four seasons – Spring, Summer Autumn and Winter. The Spring person needs to use bright, vibrant, clear colours from light to bright and a Summer person needs soft, muted colours (that doesn't discount darker colours as the range includes soft dark colours that must be toned down or lightened). The Winter person suits very strong, acidy and sharply contrasting colours and the Autumn person suits the deep, earthy tones in the muted, soft end of the range – not just olive, brown and rust, but purples and any golden tones. </p>
+          <p> During a colour consultation, the consultant looks at personality, colour preferences, the pattern in the iris of the eye, the effects of testers on the skin and does a detailed draping with a whole range of colours under special lighting conditions. The client is given a wallet containing her range of colours, 36 in all, which represent thousands of shades and advised to wear darker or lighter. </p>
+          <p> Colour consultant Evelyn Burns was running a nearly new designer shop when she started to notice that an increasing number of brand new outfits were coming in. "People had made mistakes and chosen the wrong colour. When they told me they had had their colours done, I remember thinking – my goodness, imagine letting someone tell you what colour to wear! I was so sceptical," she laughs. "But as I watched these women transforming themselves, I thought I might be able to help women to select on the basis of their natural colouring. Then during a trip to London, I had my own colours done and it turned out that I was getting my own clothes wrong! Then I could see, wearing the new colours and make-up, how different I looked and how much better!" </p>
+          <p> Two years later, Evelyn trained with a Californian company in London and four years ago, set up her offices in the heart of Belfast. She also trains throughout Ireland and has 36 consultants, including one in Australia! </p>
+          <p> And most women do get it wrong. Studies have shown that over 50 <amp> per cent sign </amp> have the wrong colour of clothes in their wardrobe. "The problem is that most people are drawn to two totally different spectrums of colour. That is affected by the person 's taste and personality and what she 's attracted to, so that 's not something I eliminate, just something I have to work with and have to learn to recognise through the procedures in the consultation." </p>
+          <p> Evelyn also knows that people have moods in colours that attract them more to one than another, from one year to the next, from one season to the next, and that they 're also influenced by what 's going on in the fashion world. "Grey is being plugged this year and so many people who have never thought about grey will be wearing it, whether it suits them or not." </p>
+          <p> Once Evelyn has established the two colours that the client is drawn to, she does a skin tone test where she finds out if the skin tone is cool or warm, followed by an eye pattern test. The iris diagnosis is based on the alternative therapy, Iridology which is a very important tool for working out someone 's colour. "About 25 years ago, a connection was discovered between colour analysis and Iridology – they discovered that genetically, people with certain shapes in their eyes had certain personalities." The Autumn person often has a star shape around the pupil and the Winter person has a black spoke or stripe in the eye. The summer person has a 'cracked glass' pattern in the eyes and the Spring person has a golden sunburst. "My eyes are actually blue," smiles Evelyn, "But because I'm spring and have a golden sunburst, they look green! And no, I don't ever wear green eye shadow!" Wearing matching eye shadow does little to enhance the skin. Many Winters who have olive coloured eyes, don't suit olive, they're better wearing emerald. Many brown eyed women wear brown eye shadow which does nothing for them, they should be wearing greys or mauve tones which will have a clarifying effect on their skin. </p>
+          <p> Evelyn advises the client on all aspects of make-up, doing their faces so they can see for themselves. She also gives advice on the kind of jewellery the client should wear and even the size and colour of glasses that will suit her best. Most women, alas, do seem to get it wrong! </p>
+          <p> Evelyn drapes her clients in silk scarves with a range of colours, working through the reds and yellows, greens and browns, pinks and blues in a particular order, leading them to the point where they can see for themselves what suits them and what doesn't. "It usually takes about 6 drapes which just cover the shoulders and reflect onto the face, but once they can see, they 're delighted!" Some people respond very dramatically at times, sometimes chatty people are deep in thought at the end of the consultation, but everyone plans to start wearing their new colours. </p>
+          <p> Winters get it right better than anybody else because, by personality and genetically, they 're set up with real flair and man of them are involved in fashion design. "There 's a whole connection between the seasons and the occupations they 're involved with," says Evelyn. "Winters are also compassionate and are often in the medical profession. So, a profession is often a clue to a consultant." Superficial colouring, of course, is not and all the seasons have an equal mixture of colours – you can have a blonde, blue eyed Winder, Spring, Summer of Autumn. Many Autumns are in teaching or training and involved with the organisation of people. They have powerful perseverance and, along with Winters, are often powerful leaders. Springs are the communicators and like selling, they 're good at PR and can do small talk spontaneously. Diversity in their job is a necessity. Summers are the gentle people in life – they 're very methodical and precision orientated and do the support role, brilliantly. "I am spring," says Evelyn. "But remember the idea of two sides to everybody and that they 're drawn to two different types of colour – I 'm a Spring with Summer secondary, like the active and the passive. Spring, yes, I want to be out there with other people and Summer, the reserved, where I 'm quite happy on my own! And precision orientated and pernickety!" Evelyn is drawn to red and golds. </p>
+          <p> Fragrances also connect with a person 's colouring. The Spring person suits light floral or fresh fragrances like <sic> like </sic> L'Air du Temps, Colours by Benetton and the Autumn woman needs something a little more musky, like Opium, Eternity, Poison. Winters suit spicy perfumes – Paloma Picasso, Safari and the Summers suit the lightest scents like Rive Gauche and <sic> Channel </sic>
+            <corr> Chanel </corr> No. 5. "Different fragrances smell different on different people," says Evelyn. "It 's because of the undertone, the chemistry of the skin." </p>
+          <p> Your colour is genetically set up, like your finger prints and eye pattern. If people learn about the particular shades of colour that suits them, in clothes, in make-up, in hair colour, they will be totally harmonious and perfectly groomed. "This is not about looking beautiful in ideal terms," says Evelyn. "It 's about looking perfect for them and nothing beats the balance of colour. It presents them in their best light and gives them an aura of good judgement and harmony. Once you discover what suits you, people start saying how well you look and it 's a real confidence booster," laughs Evelyn. "And let 's face it, we could certainly all do with a daily does of that!" </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/017.00000</textSigle>
+            <title>Belfast Telegraph, Autumn Home Focus supplement</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-015$A">
+          <head>
+            <sic> Puting </sic>
+            <corr> Putting </corr> a new light in your life </head>
+          <p>
+            <hi rend="bold"> Nature is brilliant at varying the light with the seasons. </hi>
+          </p>
+          <p> It varies from sombre, muted glows of winter, through the contrasting light-and-shades of summer to perhaps its most effective: the mellow, subtle levels of autumn. </p>
+          <p> You can match the mood of the year just as easily in your home with careful and imaginative use of lighting. </p>
+          <p> It is not widely realised that lighting effects can transform a house far more cheaply than a complete redecoration, say the Lighting Association. </p>
+          <p> Lighting offers tremendous flexibility – no two evenings in your front room need present quite the same atmosphere. </p>
+          <p> Spotlights, uplights, downlights, table lamps, pendants – there 's a vast number of ways to ring the changes. </p>
+          <p> Every room in the house benefits from imaginative lighting – and low voltage halogen and compact fluorescent bulbs add to possible combinations. </p>
+          <p> The living room has to perform a multi-function role, so versatile light sources are essential. Dimmer switches, too, are invaluable. </p>
+          <p> Downlighters create shadowy areas which can make a room look more cosy and intimate. </p>
+          <p> Subdued background illumination can also help protect against eye strain, which opticians warn can result from watching television in the dark. This can be achieved with "wall-wash" lighting. </p>
+          <p> By contrast the kitchen should be shadow-free yet many suffer from having only a central light source. </p>
+          <p> Good lighting can eradicate the dangers of working with sharp utensils in your own gloomy shadow. </p>
+          <p> Bedrooms offer wide scope for discreet lighting effects, often with opportunities to create effective glows by reflecting light off large mirrors. Uplighters are also ideal for bouncing light off surfaces. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/017.00001</textSigle>
+            <title>Belfast Telegraph, Autumn Home Focus supplement</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-015$B">
+          <head> A fitting change </head>
+          <p>
+            <hi rend="bold"> FITTED bedrooms are on the increase in Northern Ireland homes, though they account so far for only a small proportion of the very large bedroom furniture market. </hi>
+          </p>
+          <p> This is in sharp contrast to other countries on the continent such as France where up to 80 pc of homes have fitted bedroom furniture. </p>
+          <head> Smaller </head>
+          <p> This recent trend can be largely attributed, said a spokeswoman from Sliderobes, to the type of house being built today where rooms tend to be smaller and more awkwardly shaped. </p>
+          <p> In these situations, fitted bedroom furniture triumphs over free standing as it 's custom-built, utilizing every available inch of space, from floor to ceiling and it can be made to fit any bedroom, no matter what its shape. </p>
+          <p> Fitted wardrobes with sliding doors can offer a further advantage as unlike standard fitting which has hinged and bifold doors don't encroach at all, into any of the bedroom space. </p>
+          <p> Where space is particularly limited sliding mirrored doors prove very popular as they automatically create an illusion of spaciousness in even the smallest of rooms. </p>
+          <p> Mirrored doors have always been popular. However they are not to everyone 's tastes. </p>
+          <p> As a result of demand, the variety of door styles has been expanded greatly to include a wide range of wood effect panels, some very beautiful wood veneers, wallpapered panels and for those who wish to achieve total co-ordination in their chosen decor – the fabric covered panel. </p>
+          <p> Fitted bedroom furniture is particularly popular around the 35 years of age group. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/017.00002</textSigle>
+            <title>Belfast Telegraph, Autumn Home Focus supplement</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-015$C">
+          <head> What to look for in a conservatory </head>
+          <p>
+            <hi rend="bold"> NO matter what the reason for building one, there can be no doubt that the addition of a conservatory will increase the value of a home and provide a room with a difference. </hi>
+          </p>
+          <p> It therefore pays to select carefully, warns Charlie Woods, manager of BDG Conservatories. </p>
+          <p> It is also desirable that the sun should shine in the new room. However a south facing conservatory will become stiflingly hot if not properly ventilated. </p>
+          <p> While high level opening windows are fine to air the room an opening roof vent is even more efficient. It is worth considering incorporating thermally controlled roof vents. </p>
+          <p> No longer is the conservatory a room which is used only in summer and for that reason double glazing is generally standard nowadays. In particularly sunny locations, tinted glass may be desirable as it cuts down both glare and heat. </p>
+          <head> Strong </head>
+          <p> Glare can also be caused by very light coloured ceramic floor tiles and it is worth keeping this in mind when choosing from the wide range of floor coverings available. </p>
+          <p> The most common materials used in the framework of a conservatory are aluminium, timber and PVCU. Each of these have their advantages and disadvantages. Aluminium provides a very strong structure but may not perform as well thermally as PVCU while wood requires more maintenance than either. </p>
+          <p> Lighting can create atmosphere as well as fulfilling a practical purpose and in many dwellings the <sic> fluorescent </sic>
+            <corr> fluorescent </corr> strip has been replaced by more subtle means of ceiling and wall lighting. </p>
+          <p> A ceiling fan can help ventilation but can also incorporate lighting and be decorative. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/017.00003</textSigle>
+            <title>Belfast Telegraph, Autumn Home Focus supplement</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-015$D">
+          <head> A new outlook on life </head>
+          <p>
+            <hi rend="bold"> ONE aspect of your home that influences your life is that of sunlight, another equally fundamental consideration is energy, writes Jonathan Cromie of Turkington Windows and Conservatories. </hi>
+          </p>
+          <p> We instinctively know that sunlight is crucial to our mental and physical health, yet progress has resulted in our conducting more of our working time hidden away from the sun. Our optimum environment is daylight. </p>
+          <p> A surprisingly large amount of heat too is provided by the ambient energy present in daylight. We should do well to consider that during daylight a glass wall will gain more heat <sic> that </sic>
+            <corr> than </corr> it loses, whereas a brick wall will only lose heat, especially when wet. </p>
+          <head> Integral </head>
+          <p> Conservatories therefore have become very popular additions to our homes for good reason, and, are now often integral parts of new dwellings. </p>
+          <p> Up to 50,000 conservatories a year are being installed in Britain, and the number is rising. As a result of new technology and materials, today 's conservatory can be more economic than ever before. Reinforced PVCu has become the norm, with its low maintenance and high insulation properties. Double glazing, toughened, tinted, laminated or with low emmissivity coatings are even more practical. Roofs can be double glazed, or of polycarbonate, with its properties of great impact strength, increased insulation, lower deadweight, ultraviolet filtering and glare reduction without the need for internal roof blinds. </p>
+          <p> Features of any conservatory depend on the demands and <sic> constraints </sic>
+            <corr> constraints </corr> imposed by your home. If you do not have doors from your house at a suitable position, which windows you open up into doorways; which position would give the best views? </p>
+          <head> Symbol </head>
+          <p> Orientate the site in a southerly aspect if possible for maximum solar gain, S.E. for morning sun, S.W. for a view west as the sun sets. Do you want your conservatory easily seen from the road as a status symbol, or is it to be a quiet retreat away from public view? </p>
+          <p> Doors and windows of many kinds can be used, remember, heat build up in summer can be surprising and windows can be features as well as necessities. </p>
+          <p> Solid floors store heat during the day and improve ambient temperature, remember, reflective or white tiles should be avoided as they dazzle under direct sunlight. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/017.00004</textSigle>
+            <title>Belfast Telegraph, Autumn Home Focus supplement</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-015$E">
+          <head> Get your garden ready for spring </head>
+          <p>
+            <hi rend="bold"> SEPTEMBER sees a change of emphasis in the garden, a change which gains impetus as the autumn advances, writes Craig Wallace. </hi>
+          </p>
+          <p> During the summer months the emphasis is mainly on maintenance and the keeping up of appearances – the lawn, hedges, the roses, the general flower borders, hanging baskets, window boxes, container plants, the vegetable plot. </p>
+          <p> With attention being paid to watering and feeding, a colourful flower display can be maintained to the end of September and beyond. </p>
+          <head> Fillip </head>
+          <p> And with such a sunless summer a fine "back-end" would be a real fillip. However, as the light evenings get shorter and the days draw-in, harvesting and planning ahead become increasingly important. </p>
+          <p> Bulb planting now means a welcome display from February through to May next year. The bulbs have been in the nurseries and garden centres since the end of August. </p>
+          <head> Choice </head>
+          <p> Even if planting has to be spread out, purchases should be made as soon as possible. Otherwise as the bulbs get picked over, and the boxes emptied you might have to take the leavings and second choice. And it 's not unknown for bulbs to get mixed with all the handling and sorting, the longer they are on display. </p>
+          <p> Daffodil planting comes first, repeat first. Expert growers make a point of getting in their daffs before the end of September, earlier if possible. Generally the taller and larger the daffodil variety, the bigger the bulb – dwarf and miniature types produce quite small bulbs. </p>
+          <head> Virus </head>
+          <p> I have seldom seen poor quality bulbs on offer from local garden centres or from the reputable bulb firms, but beware of the cheap mail-order bargains as they can prove to be very disappointing what with virus, eel-worm, narcissus-fly affecting the bulbs. </p>
+          <p> Tulip planting can take the hindmost, even well into November, with all the others, the crocuses, snowdrops, irises, aconites, scillas, hyacinths, puschkinias, etc. coming in between. It 's all about looking forward and planning. </p>
+          <p> Work on the lawn also has an element of looking ahead – for a better sward next spring and summer. Autumn lawn dressings tend to contain less nitrogen and greater proportions of potash and phosphate. </p>
+          <p> Hence the immediate greening-up effect is less noticeable, compared to spring and summer lawn foods. On the other hand the slower acting ingredients work over the autumn and winter months so that the grasses get off to an early spring start. </p>
+          <p> The manual tasks – scarifying, raking, aerating, spiking, top-dressing – all are aimed at long term improvements as well. </p>
+          <p> Autumn is also a time for "putting to bed" the summer flowers – the gladioli, dahlias, begonias, the early chrysanthemums, fuchsias, geraniums. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/017.00005</textSigle>
+            <title>Belfast Telegraph, Autumn Home Focus supplement</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-015$F">
+          <head> The colours of autumn </head>
+          <p>
+            <hi rend="bold"> WHAT colours an designs are fashionable in the home this autumn? asks Mandy Tang of Donaldson and Lyttle. </hi>
+            <p>
+              <p> Well, almost anything goes, it 's down to the individual 's personal taste, ranging from cool blues, greens and yellows to intense marigolds, <sic> colbalt </sic>
+                <corr> cobalt </corr> blues and deep Indian red, even natural ivory with taupe, combined with texture all seem to be increasingly popular. </p>
+              <head> Tones </head>
+              <p> Therefore, earth tones are very much a favourite combining terracotta and golds with rich spice colours. A lot of these themes are inspired from Indian art, textiles and architecture. </p>
+              <p> Traditional styles are being freely and imaginatively adapted to suit the modern home. However, man fabrics used in the later 17th century were made from luxury silks and heavy cotton velvets which have to be replaced with man-made fibre copies to create a similar effect. </p>
+              <p> Many traditional fabrics were heavily patterned with deep floral prints and brocades which complemented the silk damask weaves used on upholstery. </p>
+              <p> Many people today concentrate on what fabric they use on their suites and use that as a base to work around. </p>
+              <p> They are initially looking for value for money, a hard wearing cover with serviceable colours. These can easily be found with the help of an interior design consultant who has the knowledge of what is widely available. </p>
+            </p>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/017.00006</textSigle>
+            <title>Belfast Telegraph, Autumn Home Focus supplement</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-015$G">
+          <head> Mediterranean style </head>
+          <p>
+            <hi rend="bold"> WHEN it comes to the use of tiles in our homes, we fall well behind our style-conscious European partners, writes Frances Egan of Tile Market. </hi>
+          </p>
+          <p> The French and Germans use around twice the number of tiles we do and the Italians around four times. However, in recent years the trend towards tiles here is rapidly growing and reflected in the styles, colours and sizes available. </p>
+          <p> So why tiles? A look at the practical benefits will explain why there is an ever increasing popular choice. </p>
+          <p> Firstly, they are easily cleaned and hygienic. They don't hold residues or dust and are largely unaffected by light. Another important features of ceramic tiles is their insulation capacity. They tend to retain heat generated inside a room, while on the other hand they will keep a room cool during hot weather. </p>
+          <p> Traditionally tiles are used most in kitchens and bathrooms. However, trends in interior design and the move away from wall to wall carpeting means tiles are in vogue throughout the home. </p>
+          <p> Tiles fall into two main categories – floor tiles and wall tiles, each of which are made to different specifications and are available in a wide range of materials. Therefore the importance of visiting a specialist, experienced tile supplier must be stressed if you are to find the right tile for your job and avoid the pitfalls. </p>
+          <p> Floor tiles are available in a wide range of materials ranging from ceramics to marble, terracotta and slate. The choice of floor tile will depend on what type of effect is to be achieved. Terracotta and slate tiles give a warm rustic feel while ceramic tiles give a more modern look. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/018.00000</textSigle>
+            <title>Today's Bowler</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>David Corkill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">2001</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-014$A">
+          <head> Corky 's Column </head>
+          <head> Irish international and tv-commentator, David Corkill, has joined Today 's Bowler to pass on his many experiences and give his views on the game and how he sees it developing. </head>
+          <head> SCOTLAND WITHOUT! </head>
+          <p> The Home International Series took place in my home town of Belfast with arguably the best team (they were after all the holders) not involved. </p>
+          <p> Last month former Scottish international Gary Hood gave his views on the decision of his country to pull out of the event and many others have also passed comment. </p>
+          <p> I personally believe that it was a decision taken in haste. </p>
+          <p> The reason given was that the financial contribution by Scotland was too high, maybe so. The figure of 35p levied on all bowlers is on top of the <amp> pound sign </amp> 10,000 each country pays towards the Championship/Series. Scotland 's contribution was therefore <amp> pound sign </amp> 33,000 which on the face of it, accepting that England pay a lot more, is substantial. </p>
+          <p> The issue for me though is not the cost of money terms it is more about the repercussions for the bowlers of Scotland. </p>
+          <p> The losers in the withdrawal were definitely the bowlers. </p>
+          <p> Players in the outdoor game compete in many different competitions but for most it is the National Championships that are of the greatest importance. </p>
+          <p> This is for two reasons. </p>
+          <p> Firstly, to enable an uncapped player to come to the attention of the national selectors, thus giving them a chance to be selected for the trials (or equivalent) and subsequently for the national team and secondly, to compete in the British Isles Championships. </p>
+          <p> The decision to pull out of the BIBC Championships in Belfast has made both these objectives obsolete. Unless Scotland decide to go back into the fray next year at Worthing, then the Scottish trials or their equivalent, will be unnecessary. </p>
+          <p> Most competitive bowlers harbour an ambition to represent their country. The Scots are renowned for being fiercely patriotic, which is a definite strength, but they are also one of the best bowling nations in the world. The ordinary punters trying to break into that level of bowls can, for the time being, pack their bags. Without a full international team, where can they go if they aspire to wear the coveted international blazer? </p>
+          <p> This will also impact on the teams selected for Commonwealth Games and World Championships. </p>
+          <p> Of course, a small squad of players have been selected and representatives are to be chosen from the chosen few. How <sic> eletist </sic>
+            <corr> elitist </corr> is that option when you have no way to prove your worth at international level? </p>
+          <p> The current Scottish National title-holders who were due to come to Belfast will now not get the chance and according to all reports were not asked their opinions before they were forced to withdraw. </p>
+          <p> The issue surrounding the players who qualified for the British Isles Championships is, I believe, a different case in some respects to the international team-members. </p>
+          <p> They are not subject to the vagaries of selection as they have earned their right to compete by winning the respective national championships. That gave them the right to come to Belfast. </p>
+          <p> Could they have done so without the backing of the Scottish Bowling Association (SBA)? </p>
+          <p> Not being a lawyer, I have no idea but are we straying into the area of legal argument? Could the BIBC give them permission to compete? The answer appears to have been NO. But is this a legally correct decision? I 'm not sure as to the constitution of the BIBC but I hope someone has read it very carefully and taken legal advice before issuing the decision. </p>
+          <p> High Court action relating to bowls is not uncommon. You only have to look back at the fiasco the Irish Bowls Association were involved in when they challenged a player 's right to use coloured bowls in the early stages of a national competition. </p>
+          <p> I have been asked about aggression shown on the green – was it intimidation or natural <sic> exhuberance </sic>
+            <corr> exuberance </corr> ? I replied that I felt so long as no code-of-conduct on player 's behaviour or the unwritten rules of sportsmanship were broken it was a behaviour pattern to be encouraged. Noise will never replace skill but there is no harm in unsettling opponents and lifting your own side. </p>
+          <p> Next month I 'll give an update on the more interesting points of the International Series. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/018.00001</textSigle>
+            <title>Today's Bowler</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>David Corkill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">2001</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-014$B">
+          <head> The Umpire - BRYAN DALY </head>
+          <p> A Bowls magazine wouldn't be complete without a column on umpiring. This is where I make my entrance. </p>
+          <p> At the recent World Indoor Bowls Council championships in Belfast where I was performing as Chief Umpire I had a lengthy conversation with Mr John Graham, editor of Bowls 2Day. I enjoy reading and in particular anything to do with Bowls and sport in general. After some bargaining I eventually bought one of his magazines, and before you say any more, Yes, I still had to pay the full price. Still it was worth a try. </p>
+          <p> I thoroughly enjoyed reading this bright new publication. I am glad to see that it covers all bowls in the province and definitely adds the touch of having that local interest. It certainly has something for everyone. </p>
+          <p> The championships held in Belfast in April certainly had a different look about it. We incorporated some of the features introduced by the World Bowls Tour in Blackpool last year and Potters this year. Such changes as, No dead ends, best of 2 sets (7 ends / 9 ends), 3m T and match tiebreaks certainly caught everyone 's attention. </p>
+          <p> Overall the event went extremely well attracting some of the best bowlers in the world. Having this attraction the large crowds were very well entertained. It was certainly a learning experience for most people coping with the rule changes. It put a lot of pressure on the umpires who were interested in not only keeping themselves right but also the players. I would like to take this opportunity in congratulating the Umpires for all their help before and during the event. Every single one of them are true professionals of their sport and should be proud of the fantastic work they did for me. </p>
+          <p> As already mentioned we had some very exciting matches and thankfully most went off trouble free. The only major problem I had was during one of the ladies singles round robin matches. One player was leading by 5 shots after 6 ends of a 7 end set. The player leading wanted to play the last end. On questioning the lady I ascertained that although she was leading and could not <sic> loose </sic>
+            <corr> lose </corr> the set she wanted to play the last end to try and increase her score (bearing in mind that in the round robin stages shots scored could decide who would qualify for the quarter finals if the match wins were equal). I accepted she had an argument but the rules clearly states that the set or match is over when at any stage it becomes impossible for your opponent to win. She accepted this and the game continued. </p>
+          <p> While I am on the rules of the game, I would take this opportunity in asking you to send your questions, queries and suggestions to me via 'Bowls 2 Day' and I will do my best to consider and answer your points. I would like to kick this off by asking you to send me your views on what the outcome would be in the problems faced in the last issue with Cyril 's bowls in 'The Archers'. </p>
+          <p> I will also share with you in the next issues, my experiences and views on, Local, National, International and World Bowls in Short mat, Indoor and Outdoor. </p>
+          <p> So GET WRITING NOW! </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/018.00002</textSigle>
+            <title>Today's Bowler</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>David Corkill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">2001</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-014$C">
+          <head> BE BOWLED OVER BY DENNIS </head>
+          <p> For anyone responsible for looking after bowling greens, a special seminar being organised by Dennis, the renowned manufacturer of mowers and turf care equipment, will be an absolute must. </p>
+          <p> Taking place on Wednesday 31st July 2002 at Greenmount College of Agriculture <amp> ampersand </amp> Horticulture, Antrim from 9.15am-4.00pm, one of the seminar highlights will be an overview of Bowling Green Maintenance from Dave Bracey, a Head Groundsman and adviser to the Institute of Groundmanship, the English Bowling Association, and the BCGBA. </p>
+          <p> Other speakers will cover important subjects such as Basic Machinery Maintenance, the Service and Backup available from Specialist Dealers, and topical issues including New Developments in Turfgrass Breeding. These will be backed up by full working demonstrations of the latest equipment and techniques, and a comprehensive Question and Answer Session. </p>
+          <p> The event is targeted at professional and amateur greenkeepers in the public and private sectors, as well as contractors. </p>
+          <p> Places are free, and refreshments and lunch are provided. Demand is expected to be high: a similar event held recently by Dennis in Yorkshire attracted 160 delegates. So book early to avoid disappointment. To secure your place, contact Julia Howard at Dennis on 01332 824777. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/018.00003</textSigle>
+            <title>Today's Bowler</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>David Corkill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">2001</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-014$C">
+          <head> DENNIS DEALER BOWLS THEM OVER IN NORTHERN IRELAND </head>
+          <p> Dennis, the manufacturers of mowing and grounds care machinery, have appointed the Cyril Johnston company of Carryduff as its latest dealer for Northern Ireland. </p>
+          <p> Cyril Johnston have extensive showroom facilities, and their team of dedicated sales executives promote, advise on and demonstrate a wide range of turf care equipment to their large client portfolio in both private and public sectors. They have selected the Dennis line-up, which includes trailed gang mowers, pedestrian mowers and modular turf care systems, to fill a specific niche, between domestic equipment on one hand, and large high work-rate machinery on the other, such as that used by golf courses and local authorities. </p>
+          <p> "Dennis equipment is absolutely ideal for grounds men at smaller sports clubs, and particularly for use on bowling greens," says the company 's David Johnston. "Interest in bowls is currently very strong in Northern Ireland, and clubs are keen to promote the highest standards of turf quality. With purpose-built Dennis machinery, they can achieve perfect greens." </p>
+          <p> The Dennis line-up includes the versatile FT range, which can be fitted with numerous 'cassettes' for a host of maintenance tasks including mowing, scarifying, brushing, verti-cutting and sweeping. The company 's pedestrian and towed mowers are renowned for their quality of finish, and Dennis can also supply powered barrows, anti-theft systems for turf products, and a range of hand tools. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/018.00004</textSigle>
+            <title>Today's Bowler</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>David Corkill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">2001</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-014$D">
+          <head> PROVINCIAL TOWNS INDOOR BOWLING CLUB </head>
+          <p> The Annual Dinner and Presentation of Trophies was held on Friday last, when members and their guests <sic> where </sic>
+            <corr> were </corr> welcomed by the Club 's Honorary Secretary Mr. Joe Boyd, who said how nice it was to see so many present and he wished all an enjoyable evening. </p>
+          <p> After all had enjoyed a beautiful meal prepared and served by Mrs. Ruby Teacy and her helpers, the Club President Mr H. Sweeney in adding his welcome to all present thanked the members for electing him as President. He had enjoyed his year very much and had many happy memories of it, especially when he welcomed the youth teams from all the home countries in January. This had been a very enjoyable weekend both on and off the green when we all watched some very good bowling by the young boys. Our indoor season is now finished, and went so quickly since play began in October. </p>
+          <p> Our Club is very fortunate in having Joe Boyd as Hon. Secretary and Tommy Smith as Hon. Treasurer and on behalf of our Management Committee and all our members, I thank them both very much for all the work done in looking after the smooth running of our Club. I thank also the members of our Management Committee for all their support as well as thanking Mrs. Joan McClelland and the Bar staff, Mr. <amp> ampersand </amp> Mrs. Willie Connor, our Stadium cleaners, and all the members of our various committees who work hard behind the scenes ensuring we can all enjoy our bowling. Thanks go to Mrs. R. Teacy for all the catering carried out during the year and especially for the meal this evening which we have all enjoyed. </p>
+          <p> Thank you very much. </p>
+          <p> Very well done to Mrs Dorothy McKee who not only was our Ladies President but President of The Irish Woman 's Indoor Bowling Association as well. </p>
+          <p> I congratulate the men 's team who won the A.I.I.B. Inter-Club League this year and also very many congratulations to Mrs. Rae Daly and Mrs. Jennifer Dowds who won the Ladies British Isles Championship Pairs Title. Well done to Gary McCloy who did so well in the televised tournament. </p>
+          <p> Our competitions are now all finished and I thank very much D.J. Connolly, our Competition Secretary and his Committee for looking after the running of them and I now invite my wife to present our cups and prizes. Wishing you all an enjoyable evening and a safe journey home. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/019.00000</textSigle>
+            <title>Safe House Keeping - A Basic Booklet on Home Protection</title>
+            <domain>SkiHob</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year" />
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2D-018$A">
+          <head>
+            <hi rend="bold"> Introduction </hi>
+          </head>
+          <p> This booklet is intended to provide you with some basic information on HOME PROTECTION. We know that your home is very special to you, as the place where you feel safest and most relaxed. It also contains some very valuable property, if not in a commercial sense, then certainly in terms of its sentimental worth. There is no insurance policy which could compensate you adequately for the loss and upset which can result from a burglary. That 's why you should minimise the risk of having your home broken into, and the contents stolen. </p>
+          <p> There are some very simple steps you can take, which will help improve the physical security of your home, and allay some of your fears. Many of these will cost you nothing more than a few moments of your time. Other measures may be more expensive, and may range in price from several pounds to several hundred pounds – but we 'll have a look at some of these later on. It 's best to begin with the most obvious and easiest steps. </p>
+          <p> As a starting point for considering the safety of <sic> you </sic>
+            <corr> your </corr> home, let 's look at it from the burglar 's point of view. What type of signs would help him target your home? </p>
+          <head>
+            <hi rend="bold"> Signs of vacancy </hi>
+          </head>
+          <p> Burglars tend to be skilled in recognizing signs which indicate that a particular house is vacant. This means that it is unlikely that they will be disturbed on entry and helps to explain why 80 <amp> per cent sign </amp> of burglaries take place in unoccupied homes. </p>
+          <p> The following are some of the things a burglar looks for: A build-up of milk on the door-step A build-up of papers and advertisements in the letter box
+                A build-up of letters in the hall visible from outside Blinds pulled down, or curtains across during the day No lights on at night, or just 'dead' lights like in the porch, or the hall Lights on during the day Front gates closed and no car in the drive way Notes left for delivery men or callers Uncut lawn and untidy garden </p>
+          <p> Obviously any of these occurring by itself does not confirm that the premises are unoccupied. But they are some of the criteria thieves use to target their victims. There more signs there are, the more certain they can be that nobody is at home. </p>
+          <p> These tell-tale signs can be easily avoided by a little personal care and attention. If you live in a neighbourhood Watch Area, it is likely that you and your neighbour will already have developed a greater awareness of the need to take such precautions. If you are not a member, why not make some enquiries about the advantages of this crime prevention programme. </p>
+          <p> Modern technology can also be of assistance in quite inexpensive ways. For example, you can purchase a time switch quite cheaply and use this to turn on and off lights automatically at the appropriate times. It can also be used to control radios and televisions to simulate that someone is present in the house; but do make sure that you follow the manufacturer 's recommendations and don't compromise your fire safety. </p>
+          <p> An outside light, especially at the rear of the building can also act as a deterrent – burglars certainly don't want to be seen. This may go against your natural desire for privacy, which may also require fences and hedges. Sometimes there can be a trade-off between privacy and security, with the 'happy medium' being a matter of personal choice. </p>
+          <head>
+            <hi rend="bold"> An open invitation </hi>
+          </head>
+          <p> After you have eliminated any clear indications of unoccupancy, the next step is to make sure that you do not invite the burglar in through carelessness. Most burglars are opportunists and will select the easiest target that they can find. </p>
+          <p> Don't offer him assistance by: Leaving any window open. Some people do this for ventilation forgetting that burglars will take advantage of the smallest opening. Leaving external doors unlocked. Leaving a key on a string, under a door-mat, or in some other 'good hiding place' outside. Failing to secure side doors, allowing entry to the back of the premises which is more vulnerable to attack. Failing to keep garages and sheds locked. Not only do they contain valuable property, but also tools which may help the burglar to gain access to your home. </p>
+          <p> Also make sure that ladders are not left in the open, or in insecure positions. In most circumstances the thief will tend not to carry tools, or equipment with him for fear of detection. Don't make his job any easier by providing them at the 'site'. </p>
+          <p> Simply by taking these straight forward crime prevention measures brings you well on the road to achieving greater household security. These measures alone will decrease the likelihood that you will be the burglar 's next victim. </p>
+          <head>
+            <hi rend="bold"> Keeping the intruder out </hi>
+          </head>
+          <p> There is still more that you can do to improve your security. At this stage you have reached a point where any would be burglar can only gain entry by physically breaking into your home. In many cases he can be deterred from doing this by the proper use of locks and bolts. </p>
+          <head>
+            <hi rend="bold"> WINDOWS </hi>
+          </head>
+          <p> Windows form a popular entry point for burglars, and it has been estimated that more than two thirds gain entry in this way. The risk partly depends on two factors. The first is how accessible the window is, and the second is how clearly visible the window is to your neighbours and passers-by. Therefore, those windows at the rear and side of the building, which can be easily reached from the ground, or via pipes, or adjoining roofs are most vulnerable. </p>
+          <p> Obviously windows which have not been left open must be broken, or prised to allow the burglar to put his hand through to release any catch or fitting. If window locks are fitted, his task is so much more difficult. This may force him to smash an area large enough to climb through. Breaking glass may attract attention and few burglars will want to risk it. </p>
+          <p> Furthermore, do remember not to leave the keys to the window locks where they can be seen, or are within easy reach. The style of the window can also have a bearing on vulnerability. For example, certain types of louvre windows are particularly risky wherein the glass panels can easily be removed. </p>
+          <p> Various types of window locking devices are displayed below.. You should choose a lock which is suitable to your window, whether it is a sash window, a french window, <sic> of </sic>
+            <corr> or </corr> whether it is wooden or metal framed. </p>
+          <head>
+            <hi rend="bold"> DOORS </hi>
+          </head>
+          <p> Doors, particularly those at the side and rear of the dwelling are also likely entry points. Consequently, they require special attention. It is also important to consider any door which gives access to these sites, including garage doors. Many of the better quality locks will give extra protection against attacks from <sic> jemmys' </sic>
+            <corr> jemmies </corr> , crowbars, hand-drills and picks – some of the favourite tools of the burglar. On the other hand, many outside doors are still being fitted with a type of lock which can be slipped open with a piece of plastic. </p>
+          <p> Displayed….are two types of locks which are commonly found on external front doors. A rim lock <sic> and </sic> is attached to the surface of the door. A mortice lock which is superior. </p>
+          <p> We recommend that as a minimum precaution all external doors are fitted with the five lever mortice lock. In this case, the lock is actually recessed into the door itself, as can be seen from the drawing. Door leaf should be at least 44mm in thickness to allow adequate strength after <sic> mortise </sic>
+            <corr> mortice </corr> lock has been fitted. </p>
+          <p> Mortice security bolts serve a similar purpose and can be used independently, or to augment existing security arrangements. Hinge bolts also serve to boost door security and are especially useful on doors with exposed hinges, offering protection even should the hinges themselves be removed. </p>
+          <p> The quality of the door and the materials used, will also <sic> effect </sic>
+            <corr> affect </corr> its strength against attack. If the design of the door is weak, then it will be difficult to compensate for this by using high security lock. For example, hollow doors are not suitable for external fittings, and should be confined to internal use only. </p>
+          <p> Besides the illustrations of some typical door locks, currently on the market, we have included door limiters. These provide some security when you are at home by helping you to control access. You should also consider fitting a door viewer. This will enable you to identify the caller without having to open the door. </p>
+          <head>
+            <hi rend="bold"> FIREARMS <amp> ampersand </amp> AMMUNITION </hi>
+          </head>
+          <p> If you are the holder of licensed firearms, or ammunition, you should take special precautions to ensure their safety. A steel gun locker is a worthwhile purchase which will afford a high level of security and give a life-time 's service. If you don't have one of these then keep the firearm and ammunition separately, and remove the firing mechanism and magazine. This will prevent the easy unlawful use of the weapon, not only by criminals but also by inquisitive children. </p>
+          <head>
+            <hi rend="bold"> OTHER PROPERTY </hi>
+          </head>
+          <p> Whatever the nature of your property, be sure that you have an adequate record of it and that, where possible, it is also marked with your own property number. </p>
+          <head>
+            <hi rend="bold"> RECORDING PROPERTY </hi>
+          </head>
+          <p> The benefits of marking property are that: It greatly increases the likelihood of stolen property being returned to the owner. As you probably already know, a great deal of property remains unclaimed in Garda possession as the owners cannot be identified. It will make the property less attractive to the thief. He will not be able to readily dispose of property that is marked and can be easily identified. Generally, he will not want to steal goods that he cannot resell. </p>
+          <head>
+            <hi rend="bold"> Inside the house </hi>
+          </head>
+          <p> When you are away from home, we recommend that you normally should not lock weak internal doors. They offer very little resistance and may result in unnecessary damage. If the intruder has gained access it is unlikely that these will prove realistic deterrents. For similar reasons it is also felt that cupboards and bureaus should not be locked. Moreover, in no circumstances should these ever be considered as providing sufficient protection for your valuables. </p>
+          <head>
+            <hi rend="bold"> CASH </hi>
+          </head>
+          <p> In the first instance, you should limit the amount of cash left in the home. Don't leave money in dishes or jars in anticipation of paying some bill. </p>
+          <head>
+            <hi rend="bold"> JEWELLERY </hi>
+          </head>
+          <p> All jewellery should be locked out of sight when you are not at home – either in a small floor safe or some similar protective casing. You could just as easily protect it by leaving it with a relative or friend, particularly if you intend to be away for some time. Some banks also offer this holding facility. </p>
+          <head>
+            <hi rend="bold"> BICYCLES </hi>
+          </head>
+          <p> Bicycles are very valuable items of property <sic> some times </sic>
+            <corr> sometimes </corr> carelessly left around the house. Once off the street there is a tendency to forget the danger from thieves. However, many bicycles are stolen from backyards and side passages. Always have your bicycle locked when not in use. </p>
+          <head>
+            <hi rend="bold"> PROPERTY MARKING NUMBER </hi>
+          </head>
+          <p> A property marking number is simply a specific number used to identify your property. We recommend that you use your date of birth as initials, for example: </p>
+          <p> If your name is John A. Dunne, born on the 13/11/43, then your property number would be 131143 JAD. You put this number on all appropriate items of your property, using one of the methods outlined below. You then fill out a card with this information, and return it to your local Garda Station.</p>
+          <p> The items which should be marked are those most likely to be stolen, especially portable electrical and mechanical goods. In the event of property being stolen and later recovered, the Gardai will have no trouble in matching the property with its rightful owners. </p>
+          <head>
+            <hi rend="bold"> PROPERTY MARKING </hi>
+          </head>
+          <p> You can mark your property with any of the following. 1. An ultra-violet pen 2. An electric engraver 3. An indelible marker 4. An etching tool 5. A series of metal punches, the precise method will depend on the nature of the property that you are marking; on whether or not it is glass, metal, wood, fabric etc. There are some items of property which you will not want to mark because of their individual character or value, e.g. crystal, items of jewellery or antiques. Those items should be photographed. </p>
+          <p> If you wish to know more about the property marking scheme, contact your local Garda Station. </p>
+          <head>
+            <hi rend="bold"> Conclusion </hi>
+          </head>
+          <p> This booklet has been confined to suggesting basic ways and means of increasing your home protection. That 's why it has not dealt with alarms, safes, security fencing, etc. We do not want you to feel that you have to convert your home into a fortress, as a little thoughtfulness can prevent many burglaries from occurring. However, should you feel that you may require these types of systems to meet your personal needs and circumstances, always make sure that they comply with accepted standards as in the case of the current Irish Standards for burglar alarms I.S.199. Additional professional advice can be obtained freely from the Crime Prevention Officer. </p>
+          <p> You now know that crime prevention does not need to be expensive or technical. Common sense and a few pounds will put you on the road to greater security – start with the doors, and then move on to the windows until you have a security system in which you can trust. The Gardai are always prepared to assist you in this development. Call your local station should you have any questions related to this subject. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/021.00000</textSigle>
+            <title>Eating Women is not Recommended</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Eilis Ní Dhuibhne</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-011$A">
+          <head>
+            <hi rend="bold"> Transformers in the Sky </hi>
+          </head>
+          <p> The parents ' committee meets every first Tuesday of the month and this was a Tuesday. Rain and sleet pouring out of the heavens, an east wind that would swipe your nose off. Keith had a touch of his asthma and really I didn't feel like leaving him. But needs must. I 'd been on that committee for four years and hadn't missed a meeting. Keith seemed to be alright: he 'd got his new toy to play with, one of those little transformers all the kids are mad about. He was sitting up in bed, fiddling with it, when I looked in from the hall. So I said nothing, just wrapped myself up in my old anorak and dived into the car. <quote> 'Take care!' </quote> Denis shouted from the hall door. <quote> 'One of those tyres is bald!' </quote>
+          </p>
+          <p>
+            <quote> 'Not as bald as you!' </quote> I thought. But I just said, <quote> 'OK, will do', </quote> since I wasn't in a joking mood. </p>
+          <p> I wish we could afford a new car or a new set of tyres that aren't bald. But we 're lucky to have any car at all. </p>
+          <p> When I got there most of the others had already arrived. There were some excuses from the usual malingerers. And one member hadn't rung but hadn't yet turned up. Kay Brown: she 's a writer, married to a well-known journalist, and kept busy, I 'm sure, with all sorts of does. One of the glitterati, she is, on the telly every time you turn it on. I don't know why she bothers with the school committee, but she does. She was elected last year, the year her kid started. It 's considered rather an honour to have her. Nobody would say that aloud but they don't need to. You can see it in the way they kind of wither slightly when she arrives on the scene, and start addressing their remarks to the door or the ceiling, instead of to the group. As often as not, Kay Brown doesn't turn up for meetings. And just as well, I think, sometimes. </p>
+          <p> We waited for five minutes. I talked to Mrs Johnson, Brendan 's mother, about their teacher 's new habit. Keith and Brendan are in the same class, third class, and their teacher has taken to keeping them away from football as punishment for misbehaviour. What he calls misbehaviour. Going to the loo without asking for 'permission'. I ask you! That was Keith 's sin last week. He 'd had a carton of orange juice for his lunch as well as his free milk and he was caught short. So he wasn't allowed to go to the pitch. <quote> 'If it happens again I 'm complaining,' </quote> I said to Mrs Johnson. I was relieved, very relieved, to hear that she 'd back me up. Brendan had been kept out because he couldn't spell 'spontaneous'. I mean to say. Keith has asthma. Football is good for him; he needs the air and the exercise. And the children of Ireland are overweight. A recent survey I read in the paper has found that out. And no wonder. No wonder, I said to Mrs Johnson, with one sports class a week, and then they 're taken out of it if they can't spell 'spontaneous'. (Keith, by the way, is a good speller. I taught him to spell with the Doman method when he was two.) I was glad Mrs Johnson would back me up. You don't like to complain, on your own. Fear of repercussions. </p>
+          <p> We started at a quarter past. Mrs Fitzpatrick, Sarah Fitzpatrick 's mother, read the minutes and correspondence. She 's the secretary, Mrs Fitzpatrick. She 's a tiny woman, only about five foot tall; she 's very young and looks like a child herself. Always dressed in track suits. Even for the meetings. This night she 'd a pink one on, with a sort of embroidered peasant motif at the neck. Very girlish and nice, actually. She 's efficient and quite dedicated. Last year she ran the sports almost single-handed (I helped by buying the medals and the other prizes, but she did all the organisation.) We listened to the minutes and they were passed and signed and then we got down to the business of the evening, which was the sale of work. It 's our biggest project and takes a lot of organising. Publicity, collecting stuff to sell, arranging timetables, staffing all the stalls. God! Only the people on the committee realise how much work goes into it. You get no thanks either. But someone has to do the job. Last year we raised three thousand pounds. That 's the average, actually. The school got a new computer and three hand-drying machines for high infants, first and second. Keith 's class still has towels, unfortunately. I had my turn washing them last week. It is ironic. He seems to be running one step ahead of those drying machines all the time. Maybe this year. </p>
+          <p> At a quarter to nine Kay Brown arrived. Breezed in, I should say. Literally. Her long fair hair was wind-swept, her long beige raincoat was wrapped against her body, so you could see its thin lines. You 'd think she 'd been battered about by a force ten gale or something. It hadn't damaged her make-up though. </p>
+          <p>
+            <quote> 'Sorry I 'm late!' </quote> she said, in her brisk deep voice. She has a man 's voice actually and I think that 's part of her secret. You know what I mean? People take you more seriously if you 've one of those voices. They carry better than most women 's, somehow. She sat down in the seat nearest to Mr Leech, the chairperson. </p>
+          <p>
+            <quote> 'Problems!' </quote> she sighed, raising her eyebrows to the ceiling. </p>
+          <p> As if we 'd all understand. </p>
+          <p> As if nobody else had problems. </p>
+          <p> Mr O'Blatheration – that 's what I always call him, privately – went on saying that we should concentrate all our efforts on the bottle stall since it was such a good money spinner. He suggested we write to breweries and distilleries and ask for contributions. </p>
+          <p>
+            <quote> 'Do you know how many national schools there are in this city?' </quote> Kay Brown turned on him. Her eyes were very bright. As per usual. They have this funny mixture of amusement and something else. I can't describe it really. Confidence? As if she knew more than anybody else in the world. </p>
+          <p> He said something that sounded like 'ahem.' </p>
+          <p>
+            <quote> 'What I mean is,' </quote> said Kay Brown, her voice changing its challenging tone. She became softer, kinder, like a mother who has been impatient with her bold child but has suddenly decided to be lenient, because she 'll get better results that way. <quote> 'What I mean is, breweries and distilleries and big companies like that are probably inundated with requests like this. They 're not going to bother sending bottles to us, one school in a thousand. They probably wouldn't even answer our letter.' </quote>
+          </p>
+          <p> A lot of people in the room nodded, as if this was exactly what they were thinking themselves. Well, she was probably right. She always sounds as if she 's right. Probably she often is. And then, as I was saying, she has this dogmatic sort of voice. And Mr O'Blatheration is a stupid old bore. I don't know why he 's allowed to stay on the committee. He doesn't even have a child in the school anymore. His kids left ages ago. They 're both in the States now. Still, when she said that, I said, under my breath, <quote> 'Bitch!' </quote> I don't know why I said it. </p>
+          <p> He didn't even answer her. Oh, trust him! He went right on, saying that we should also write to all the big shops in Dublin looking for gifts for the Wheel of Fortune. As usual, he said, he would spin the wheel. He said we should do a form letter, that we could get the president of the committee and the head of the school to sign. Kay Brown laughed and looked up at the ceiling again. Mrs Fitzpatrick said: <quote> "Thank you, Mr Sheridan. We 'll consider that.' </quote>
+          </p>
+          <p> We went on to talk about the catering. Kay Brown had ideas about that, too. She thought we should have nothing except soft drinks. It would be much more practical. We always have tea and coffee, brack and biscuits. The tea shop is the busiest part of the sale of work, after the bottle stall. Funny how drinks play such an important part, I mean in a sale of work at a primary school. But they do. The other stalls are more for show. The real money spinners are the bottle stall and the teas. They 're a nightmare to run of course. There aren't enough boilers and the room we have it in is too small. But it 's part of the sale of work. </p>
+          <p>
+            <quote> 'You don't have to be traditional,' </quote> Kay Brown was saying in her persuasive voice. <quote> 'Just because something is traditional doesn't mean it 's sacred. Look, I guarantee that if we sell nothing but soft drinks we 'll make exactly the same profit we make on teas, with one quarter of the work.' </quote>
+          </p>
+          <p> Soft drinks. Just what I don't want to see more of. Denis has been on the dry for two months now, going to his AA meetings as regular as clockwork. The fridge is full of bottles of Coke. He 's spending more on Coca Cola than he spent on booze. I haven't been able to get Keith a new pair of shoes. Even the children 's allowance seems to disappear before I know where I am. Poor Keith, his toes will soon be out through the pair he has. If Denis keeps off the booze it 'll be worth it. If … </p>
+          <p> Mrs Murphy agreed with Kay Brown. About the drinks. Mrs Murphy has five kids in the school. She 's one in nearly every class. Steps on stairs. The da is out of work but you couldn't tell it from the kids. She keeps them neat and much better dressed, half the time, than a lot of the well-off ones. Don't know how she does it; it must be a real struggle. Kay Brown is quite friendly with Mrs Murphy. She 's one of the few people on the committee she talks with, actually. It 's as if Mrs Murphy is special because she 's so poor and brave, just like Kay Brown is special because she 's so talented and beautiful. It really gets me when Mrs Murphy sides with Kay Brown. They really think all the rest of us are crap. </p>
+          <p> Suddenly something funny happens. I get this buzzing in my ears. A sort of zinging sound. And at the same time I get this picture, this weird mental image. I see myself, naked in the middle of the kitchen at home. I 'm chewing something, some herb, parsley or something, and I 'm transforming. I 'm slowly transforming into some sort of animal. A brown animal, furry. A white tail, long legs, long ears. A split lip. It 's a rabbit. No. A hare. I 've turned into a hare, in my own kitchen. I hop around, timid looking, as if I 'm getting my bearings in my new shape. I jump up on the table. There 's a head of lettuce lying there but I ignore it. Instead I take a flying leap and I 'm out through the window, out in the garden. </p>
+          <p> Out of sight. </p>
+          <p> Where am I off to? </p>
+          <p> When I said that thing about getting more machines, drying machines, last month, Kay Brown laughed and said: <quote> 'Do you know that those drying machines constitute a danger to the human skin? Towels are much safer. Much. Doesn't matter how many germs are on them.' </quote>
+          </p>
+          <p> Honestly! </p>
+          <p> As soon as any other business is over I leave the room. I don't stay on for the tea and biscuits. I leave the room and I go out to the car and I drive home. It 's still raining. The road is black and shiny like polythene. Reflected lights dance on it, yellow, red, green. They hop around in front of my eyes so that I can hardly see. There are other lights leaping around in my eyes, too. Shimmery lights reflected in the tears that are covering my pupils like ice melting on black tar. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/022.00000</textSigle>
+            <title>Kerry through its Writers</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>John Coolahan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-015$A">
+          <p> Among places of enchantment were the woods, with their laurel, chestnut and hazelnut groves. Each season brought its own magic to the woods. Building tree houses in the lushness of summer, gathering conkers in the multicoloured autumn, wandering through the scented bluebells and wild garlic in May and collecting holly and ivy in the cold, bare woods at Christmas time, were some of the seasonal variations of activity. Born by the sea, one never loses the sound of the sea and the majestic Shannon estuary at Tarbert was a continual fascination in a whole variety of ways. There was swimming in the favoured spots such as Rusheen, Wall 's Bay, the Slatey Pier, the Island and the Back-o-the-hill. There was fishing from the pier and on "The Bank". Periwinkles, bornachs and mussels were in profusion and unpolluted along the shores. The tides came and went in ceaseless motion, ships plied up and down the river, and the curlews, seagulls, swans and widgeon brought the reed-fringed mudflats and creeks to life. Tarbert Island with its lighthouse, battery coastguard station and gantry brought <hi rend="italic"> Treasure Island </hi> and <hi rend="italic"> Coral Island </hi> close to home, and bands of cowboys and Indians, or hordes of cops and robbers worked out their fantastical games in-and-out through the ruins. </p>
+          <p> In April and May the boglands called for the turf-cutting, and through the summer they spread their splendour of bog-cotton, heathers, furze and many-coloured mosses to enchant the eye. The cutting and saving of hay, with a heavy reliance on manual skill and horse power, had fun as well as work attached to it. The satisfaction of leaving a wyned meadow in the evening sun, with the aroma of freshly saved hay in the nostrils, stays as a haunting memory. </p>
+          <p> There was no time for boredom, the word was never used. There were many hunts – rabbits, hares, foxes and the occasional badger hunt. The "horse-park" was the mecca for groups of young and established football players in the evenings as aspiring youngsters tried to imitate their heroes. The year was <sic> pun- ctuated </sic>
+            <corr> punctuated </corr> with a variety of activities and events which were very congenial to youngsters. The great carnivals, which drew huge crowds of all ages to the village, were held in August. The fancy dress parades were highly elaborate and imaginative. It took a couple of hours for all the sections of the parade, from individuals to large groups, to pass through the crowds lining the streets. Horses, tractors and lorries were used by the larger groups for their colourful presentations. Regattas with their boat races, swimming races, greasy poles and pillow fights, brought great excitement to the island. Matches in football tournaments drew large partisan audiences. At night the pubs resounded to laughter, songs, music and arguments. There was no consciousness of a generation gap in the dancers who thronged the marquee. The carnivals may not have had the flamboyance and exhilaration of a mardi gras, but they had as much vitality as an Irish community could give them. Other summer occasions were marked in different ways, for instance, May Eve was treated with a sense of unease and respect. The summer tree (sycamore) was brought into the houses, and whispers were made of the "piseogs" which could be perpetrated on that evening, which retained vestiges of old pagan folk memory. The old festival of mid-summer was also marked by the mighty bonfires on the Market Road on St. John 's night, for which materials were gathered evenings in advance. We danced and played as the flames and sparks went higher in the night sky, giving us feelings, at once, of both fascination and dread. </p>
+          <p> The autumn evenings were marked by the Listowel races, the All-Ireland final and the Glin Coursing. As altar boys we visited the houses throughout the parish for the stations in the mornings, and attended at the October rosary and benedictions in the evenings. These led on to Halloween, with the excitement of "high-fiddles", snap apple, Halloween games and blind-man 's-buff. The abundance of apples, nuts and barmbracks were consumed with relish. </p>
+          <p> Christmas, of course, was special in the village, as everywhere else. Many of us, however, preferred the activity of Stephen 's Day to the quiet atmosphere of Christmas Day. Groups of us gathered and tramped the countryside with the Wren-boys, generally being warmly welcomed and well-treated in the houses which dotted the landscape. Trudging home from the hills of Ballygaughlin, with lights and Christmas candles lighting the dark, and with many days of Christmas holidays stretching ahead, was a good feeling. New Year 's Eve was a special night in the village when crowds gathered in torchlight procession, with accordions and bodhré/ans bidding farewell to the old year and welcoming the new. The music, dancing and songs carried on in the village square into the early hours. </p>
+          <p> At other times, the village was entertained by the sounds and smells of the animals, which were part of the agricultural economy of the region. The cattle fairs, bull-tests and pig sales brought varied activity to delight youngsters. The great social occasion of the creamery, particularly on summer mornings, created a buzz of activity and conversation in the village, and also brought town and country close together. The forge with its sizzling fire and sound of the anvil also brought town and country and hedgehogs together, as youngsters vied to blow the large bellows to redden the blacksmith 's horseshoes. </p>
+          <p> The carpenter 's shop with its resin-smelling ringlets of shavings was also a place of delights. The whine of the great saws mingled with the carpenter 's hammer blows, as cradles, coffins, carts and crates were fashioned. Nearby was the parish hall which housed the billiards club, the hops and the whist drives for the older groups. </p>
+          <p> The school, for good or ill, is the institution which has a vast range of influences upon us when we are young. Many experiences <sic> occured </sic>
+            <corr> occurred </corr> there with life enhancing as well as debilitating effects, but which stay with us to the grave. In our time the tolling of the church bell for mass, angelus, or funeral was close to us in the school. In the church the great events of Catholic life – baptism, confirmation, marriage and funeral – were conducted and, to the eyes of us altar boys, had an interesting ritual about them, if also tinged with trepidation at times. The primary school had been built in 1869 and was strictly segregated between boys and girls. Facilities were rather spartan, and the large rooms depended on the quality of the turf, brought by children 's parents, for the open fires. Discipline tended to be on the <quote> "spare the rod, spoil the child" </quote> principle, with catechism class particularly fraught with anxiety. For some of us, practice with the mouthorgan band brightened the rather narrow curricular range, which was based primarily on English, Irish and Arithmetic, with a welcome dimension of History and Geography added. </p>
+          <p> A minority of pupils went on to secondary school in the nearby St. Ita 's. This was one of the small lay, co-educational secondary schools to be found, fairly regularly, in Kerry and Limerick at the time. The founder of the school, Miss McKenna, was a noted educationalist who set high standards as the norm, particularly in her specialist subjects, English and French. She and her team opened up for us teenagers the richness of new languages, great literatures, mathematics and so on. It was also an era in which the competition for the public examinations was much less intense than to-day. Pupils cycled and bussed from nearby townlands and villages to the school. </p>
+          <p> We were always conscious that most parents took schooling seriously, and one took for granted a regard for learning, which was part of the tradition of the region. Both the national and secondary schools bore witness to the long-term impact, which gifted teachers can have, on the attitudes and outlook of youngsters in their formative years. Since that time the "school on the hill" has been replaced by a splendid comprehensive school, and it is gratifying to know that the traditions of good schooling and scholarship are alive and well in that corner of north Kerry. </p>
+          <p> The forties and fifties were decades of economic depression, and many families suffered from the deprivations of real poverty. Employment, other than in agriculture, was very rare and emigration was the lot of many. It was sad to see so many of one 's school pals gathering at the corner to catch the bus to Limerick and be on their way to England. To get there, they were often aided by the allowances gained on F.C.A. training camps. It was the scarcity of money which acted as a constraining and blighting force on many people. The fabric of community life was maintained and, often, the very poor did not allow their material impoverishment to quench the spirit of their personalities. To a degree the old proverb <éIrish> "Ar scé/ath a ché/eile a mhaireann na daoine" </éIrish> was borne out, and various quiet forms of assistance were available. Nevertheless, life, in general, was affected by the lack of a employment for the people of the area. Even as a youngster, one was conscious of this overlay of economic hard-times, and despite the richness of aspects of community life, the potential of many individuals was not realised. </p>
+          <p> A striking feature of this community life was the respect for individuals, the tolerance for eccentricities and a regard for the "characters". People were known for particular songs, or yarns, experiences or skills. This I have found to be a strong feature of life in Kerry, but, no doubt, is not <sic> inique </sic>
+            <corr> unique </corr> to it. There is, however, a delight in difference, a pleasure in language usage and a regard for the individual experience, which <sic> ia </sic>
+            <corr> is </corr> a valuable feature of life there. </p>
+          <head>
+            <hi rend="italic"> Old Glories Reflected in Stone </hi>
+          </head>
+          <p> Among many features one would like to dwell on, I will touch on one which struck me very forcibly, as a young person, but which was not much mentioned – Tarbert 's walls. To a youngster 's eye in the forties and fifties there was very little industrial or commercial employment in the village, but all around one were mighty walls and large buildings which spoke to one of a different era, a bygone era in a Tarbert which must have been very different. They stood silent as sentinels and witnesses of a Tarbert which must have been more vibrant. They symbolised an era when there must have been great collective endeavour. The question arose as to what had happened in old <sic> Tabert </sic>
+            <corr> Tarbert </corr> that left us so many monuments in stone, which seemed out of keeping with the community 's character at the time one was growing up. Only communities with a sense of confidence, of collective purpose and of optimism built on a grand scale, and such optimism was foreign to the decades of the forties and fifties. Another question which arises in one 's mind was the number of skilled craftsmen who must have been there to build such splendid edifices. The scale of the building projects would have required a whole sophisticated culture in crafts, but particularly in stone masonry. When I looked at skilled masons in our time, they seemed to be the inheritors of this older tradition. As well as the scale of the buildings and the remaining walls of greater edifices, one was also struck by the beauty of the stone itself and by the skill and sense of pride which exuded from the workmanship. </p>
+          <p> The surviving evidence went back to the medieval times as evidenced in Kilnaughtin Church and Lislaughtin Abbey. In the latter, the beauty of the dovetailing of the flat river stones with the shaped limestone of sedilia and lintel windows has been beautifully caught by the Polish artist Ursula Ratzlaff O'Carroll. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/023.00000</textSigle>
+            <title>Kerry through its Writers</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Bryan MacMahon</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-017$A">
+          <head> Born in a Market Place </head>
+          <head>
+            <hi rend="italic"> Bryan MacMahon </hi>
+          </head>
+          <p> I was four years of age when, taken by the hand, I was led down to our newly built house in Market Street. As the name of the street implies, our back gate now opened onto the marketplace itself; standing on the "keepstone" on which the two parts of the backgate were anchored I peeped out through a bolthole perhaps six inches square and found myself gazing into a new and magical world – the world of the market. </p>
+          <p> To make it more personal, my grandfather, old Pat MacMahon, was weighmaster and was thus in charge of the place. He must have been a tenacious old man, for, refusing to have soldiers of the empire billeted upon his home, he was deprived of his licence as a publican and was later fortunate enough to be appointed to the post he then held. </p>
+          <p> The marketplace branded me for life. It was thronged with country-folk almost every day of the week. When it wasn't a calf market, it was a pig market or a butter market: on Fridays it was the country produce market – perhaps the most exciting day of all. </p>
+          <p> The cattle fairs were held in the adjoining streets- directly under my bedroom window as well as in the broad Square. On the occasion of the Old or Big Fairs they spilled into the other streets of the town. There were times when I awoke at daybreak to hear the sound of hooves under my window and to realize that a horse fair was in progress. Donkeys, mules and jennets were also bought and sold on these occasions: these provided a plebeian counterpoint to the three-quarter bred horses destined for the hunting field. The <sic> amoniac </sic>
+            <corr> ammoniac </corr> smell of horse droppings and cowdung lingers in the recesses of my nose to this day. </p>
+          <p> So I became acquainted with all aspects of country life as seen through the glass of the market. The place had marvellous ancillary goods and produce for sale at its gates and archways. Scollops or thatching withies, eelfry, cockles sold by the fluted pint glass, salmon, beef sold by the yard and hung on a steelyard or "stiller" to be weighed, periwinkles and seagrass. </p>
+          <p> There were innocent looking churns which looked as if they contained "home" or sour milk for pot-oven baking, but when the cover was removed – this when the whole area was cautiously surveyed – the vessels were seen to be three quarters full of sea trout or, as we called them, "white" trout known in Irish as <éIrish> "liathé/ain" </éIrish> or grey trout. The net used for killing these fish was called the <éIrish> "Cauteen" </éIrish> and it had a finer mesh than the net used for salmon – indeed it was sometimes slipped inside the main net for the purpose of holding the smaller fish. </p>
+          <p> As the Friday produce market drew near I was often deputed to purchase the vegetables for the week or month as the case may be. Buying these in bulk was buying at cost and always proved to work out far cheaper than the price obtaining in the shops. My main commission was to buy a sack of potatoes. I was warned to purchase only those that were balls of flour when boiled – and certainly not those which turned out like bars of soap. An error in this regard was reckoned a calamity. I was seven or eight years of age at the time. I thought of a cunning plan to ensure success on every occasion. </p>
+          <p> I faced the crowded market. The potato sacks with their owners were ranked against the pillars of the Market sheds. I strolled along the file of vendors, my attention focused on the men from the seashore – this because potatoes from the sandy soil with seaweed as its manure were reputed to be far better for eating than those produced on cutaway bog. As I went I picked up spent matches from the ground. </p>
+          <p> Back at the first pillar I asked the man if I could have a sample spud. The sack was open and a boiled floury potato offered as example of the finished product. Taking a sample from deep in the sack I marked it as No.1 by sticking a single match into it. Second pillar, the sample was marked by two matches and so on down the line until No.10 which looked weird with ten matches sunk deep into its flesh. This concluded my sampling. I slipped in home then and boiled my store of spuds. Ah, No. 6 was a beauty! I went back to the market and bought No.6 sack. </p>
+          <p> Not bad for a cute Kerry lad of seven! </p>
+          <p> I must mention the shawls worn by the farmwives and others: as I recall it the mingling of these coloured garments strengthened the impression that, when one was in the market, one was also in a near-Eastern bazaar. </p>
+          <p> The wives of the "strong" farmers wore capacious biscuit-coloured woollen shawls each with a delightful hem of tassels and ornamental thread-work in various colours. The quality of the garment – its opulence at times – offered a clue as to how many milch cows were on the husband 's farm. Acreage offered a misguided measure, for a farm was then adjudged by such sayings as <quote> "He has the grass of sixty cows" </quote> or <quote> "She took in a fortune of <amp> pound sign </amp> 2,000 to that place". </quote> There was also an implicit distinction made between arable and bogland; this distinction was clarified when the grazing of a cow was mentioned. "Turbary" or the right to cut turf on certain defined areas of bogland was also an added bonus relied upon at times of sale, purchase or the making of matches. </p>
+          <p> As boys we treated those glorious shawls with scant if not impious attention. Stationing ourselves in church directly behind a pair of similarly attired matrons we tied the tassels of adjoining shawls together with "black" or firm knots. When the women parted company at the end of Mass and made to move off in different directions in the church aisle their tugging pulled the shawls off each others ' heads, so that the cursory attire beneath was in each case exposed to a <sic> mercilous </sic>
+            <corr> merciless </corr> public gaze.</p>
+          <p> There were other shawls in the marketplace. Fishwomen from Tralee who sold cockles from wicker baskets, wrapping them in clutches of newsprint, wore dark chocolate coloured shawls while our own women from the thatched cottages of the town wore plain black shawls.  <sic> Swopped </sic>
+            <corr> swapped </corr> over backyard walls to attend the earliest Sunday masses the shawls allowed housewives to attend service anonymously and without the trouble of dressing up. A single eye seen in the upper triangle of the shawl often gave a keen observer a clue as the identity of the woman behind this Irish yashmak. </p>
+          <p> But for me the most attractive shawl of all was the green and black paisley shawl worn by the women from the other side of the Ferry, that is south of the River Feale and west to the Shannon mouth. "Mahera" we called that area. The old saying <quote> "Marry a Mahera woman and you marry Mahera" </quote> gave some indication of its clannishness. For me this shawl conveyed an impression mingled of faction fighting, (The Cooleens versus the Mulvihills), hurling – (Ballyduff had already won Kerry 's one and only All-Ireland Senior Hurling title) lovely loam, a Round Tower, and the net fisherman of the Cashen estuary with their unusual boats called "ganelows" – probably a corruption of gondola. </p>
+          <p> All this vanished world, as evoked by the green and black shawl, I experience again on visiting a folk and general museum perched high above the Cashen fishing village, a place familiar to the thousands of visitors to Ballybunion during the summer season. </p>
+          <p> The marketplace was then shot through with the idealism of freedom; balladsingers, each with his swatch of rebel songs, moved through the throngs. (Later, I wrote many of those ballads for my friend the printer.) The muttering about grabbed farms and rural boycotts were background music to the shouting of castclothes men with their marvellous rhetoric and the land-hungry cry of <quote> "The land for the people and the road for the bullock." </quote> The accessories for the carts were versatile – the creel or rail for bonnavs, turf or turnips, the seat-and-guards for travelling to town or even to Mass, the low box for carrying sand or gravel while the bare cart itself was capable of being loaded with stable manure or a piled array of sacks of various kinds. The vehicles were locally called Scotchcarts as opposed to the <quote> "tumbler from up the country" </quote> or even the "slide" used in the Dingle area for bringing down turf saved on the mountain flank. </p>
+          <p> The colour of the carts was a brilliant orange red with the shaft ends tipped with black: each one had the name of its owner and his townland print-painted in black at the point where the right shaft met the body of the vehicle. I came to know of every townland and of almost every family within thirty miles of my town as a result of perusing these inscriptions. I even made a collection of the townland names, querying the former owner as to where it was situated and more importantly still, the meaning of the Irish version of the name. </p>
+          <p> The butter market was something I was deeply involved in. As my father 's health waned he gave up his law office post and took to buying butter for export, working hand in hand with his brother who was a creamery manager. The butter borer used for testing the country butter took my attention. I learned to insert it in the butter pile, spin it full circle, extract it, smell the butter, bite a chunk of it, roll it round in the mouth as if testing wine, uplift one 's judicious eyes to the heavens, spit it out at a certain place in the yard and finally offer a grudged grunt of approval of its merits. </p>
+          <p> If my grandfather reigned over this colourful kingdom I was often his viceroy. This was when the market was quiet and my grandsire and one of his cronies stole off for a pint. I was then left in charge of the place. I directed horseloads onto the weighbridge, weighed them, issued a ticket and later deducted the tare or weight of the unladen vehicle. I progressed so far in my avocation that I could look at a sack of potatoes and tell almost to the pound how much it weighed. I was then about nine or ten years of age. </p>
+          <p> There was always a double line of horse rails of turf just inside the market gate – a point which was a fruitful source of interest to me. Sometimes I 'd find a dead hare hanging from the willow fork which kept the creel in place. The hare was for sale, of course, but I 'd ask for, and was given, the tail. It was easy to bargain with the turfsellers on a rainy day as our yard was on the market and the seller sold the turf at a reduced price so as to enable him to go home quickly. I came to know at a glance from which of the many bogs of North Kerry any particular creel of turf came and thus could size up its heating qualities at a glance. </p>
+          <p> There was one particular turfman who got the better of me in repartee. When I countered his asking a certain price for his load by saying <quote> "I could buy a few hundred-weights of good English coal for that" </quote> he said quietly, <quote> "Do you know what Dean Swift said about that?" </quote>
+            <quote> "I don't remember," </quote> I said. <quote> "He advised the Irish people to burn everything English except their coal." </quote> After that I always called the man Dean Swift and never after bargained with him about the price of his turf. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/024.00000</textSigle>
+            <title>Amongst Women</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>John McGahern</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1990</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-018$A">
+          <p> Though it was in its late September glory Michael lost all interest in his garden; the falling petals stayed unswept and the flowers wilted and fell into a tangled mess. Several times Rose tried to prod him towards the garden but after a short time he would just stand in it, disheartened, looking on at the disorder before moving away. The girls had praised his green hands. His involvement in the little garden was not strong enough to survive without their praise. </p>
+          <p> He had few outside interests. He did not play football or any team games nor did he fish or hunt or swim. Knowledge and information he was able to pick up without effort and he always came close to the top of his class without appearing to study. Except for maths he showed no interest in any one subject above another and his liking for mathematics seemed to stem from the fact that it came to him so easily while others struggled. With the girls gone, his main distraction and society had gone, for out of Moran 's sight he had loved to tease and play with them and they with him. He was as tall at fifteen as he would ever be and though he would never have Moran 's dramatic good looks he was handsome. After his sisters left, he discovered that he was attractive to women but it was to older women that he was drawn. From Moran he inherited a certain contempt for women as well as a dependence on them but it did not diminish his winning ways. The one drawback was his lack of money. To go about with young women he needed money and Moran would not part with any. </p>
+          <p> He went to Rose. She gave him a little money but grew alarmed when he began to come home late at night. When she got out of bed, anxious to see that he was all right, she discovered that he smelled of drink. At school he began to earn money by doing difficult maths exercises for slower boys. Moran had been listless about the house since the girls had gone but once he discovered that Michael was coming home late at night he acted decisively. Without a word of warning he bolted every door and window in the house and waited up. </p>
+          <p> When he heard the latch of the back door being raised, he was dozing in darkness. Then he heard various windows being tried. Softly he went to the back door and drew the bolt and as soon as he heard returning footsteps he opened the door. </p>
+          <p>
+            <quote> 'This is a nice hour,' </quote> he said.
+                <quote> 'I was in town. I couldn't get a lift back. I had to walk.' </quote>
+            <quote> 'What were you doing in town?' </quote>
+            <quote> 'There was a dance.' </quote>
+            <quote> 'Did you ask to go to the dance?' </quote>
+            <quote> 'No.' </quote>
+            <quote> 'No <hi rend="italic"> what </hi> ? No, pig!' </quote>
+            <quote> 'No, Daddy.' </quote>
+          </p>
+          <p> Moran beckoned him to come in and as he was passing him in the narrow hallway he seized him and struck him violently about the head. <quote> 'I 'll teach you to come in at this hour! I 'll teach you to go places without asking! There must have been drink at this hooley as well!' </quote>
+          </p>
+          <p> Sheltered by his sisters, Michael was unused to any blows and angrily cried out as soon as he was struck. There would have been a violent struggle but for Rose 's appearance. </p>
+          <p>
+            <quote> 'What an hour to come in at, Michael! You have Daddy up worried about you the whole night.' </quote>
+          </p>
+          <p>
+            <quote> 'I couldn't get a lift. He hit me,' </quote> the boy cried. </p>
+          <p>
+            <quote> 'You haven't seen the end of this by half. I 'll teach you one good lesson. Nobody 's coming into this house at any old hour of the night they like while I 'm in charge here.' </quote>
+          </p>
+          <p>
+            <quote> 'Everybody 's tired now. We 'll get to bed. Anything that has to get gone into can be gone into in the morning,' </quote> Rose said. </p>
+          <p> Moran glared at her. He seemed about to brush her out of the way to seize the boy but drew back. <quote> 'You can thank your lucky stars the woman 's here.' </quote>
+          </p>
+          <p>
+            <quote> 'He hit me,' </quote> the boy sobbed. </p>
+          <p>
+            <quote> 'And I 'll damn well show you what it is to be hit the next time you come into the house at this hour. You 're not going to do anything you like while I 'm here.' </quote>
+          </p>
+          <p>
+            <quote> 'I 'll go away,' </quote> the boy shouted self-pityingly. </p>
+          <p>
+            <quote> 'Everybody 's tired. Look at the time it is. You can't be coming in at this time. You had poor Daddy and everybody else worried to death about you,' </quote> Rose scolded and managed to shepherd both men to their rooms without further trouble. </p>
+          <p>
+            <quote> 'I 'll see that gentleman in the morning,' </quote> Moran warned. <quote> 'He needn't think he 's getting away with anything in this house.' </quote>
+          </p>
+          <p> Rose got him away to school early in the morning but it was only a postponement. During the weekend Michael had the good sense to stay well in the background and Mona and Sheila came from Dublin for the weekend, which postponed any confrontation further still. Moran was so taken up with the girls and their life in Dublin that he hardly noticed him. </p>
+          <p> These visits of his daughters from London and Dublin were to flow like relief through the house. They brought distraction, something to look forward to, something to mull over after they had gone. Above all they brought the bracing breath of the outside, an outside Moran refused to accept unless it came from the family. Without it there would have been an ingrown wilting. For the girls the regular comings and goings restored their superior sense of self, a superiority they had received intact from Moran and which was little acknowledged by the wide world in which they had to work and live. That unexamined notion of superiority was often badly shaken and in need of restoration each time they came home. Each time he met them at the station his very presence affirmed and reaffirmed again as he kissed them goodbye. Within the house the outside world was shut out. There was only Moran, their beloved father; within his shadow and the walls of his house they felt that they would never die; and each time they came to Great Meadow they grew again into the wholeness of being the unique and separate Morans. </p>
+          <p>
+            <quote> 'That boy thinks he can stroll in here any hour of the day or night he likes. I 've warned him once and for all and I 'll not warn him again. He may not take heed and if he doesn't I may need your help to bring him to his senses,' </quote> Moran confided to Sheila during one of the weekends the girls came from Dublin. She nodded and listened. She did not want to know where the talks led. Tomorrow she would be back in Dublin. <quote> 'To bring him once and for all to his senses; was like far-off thunder that could promise any sort of weather. </quote>
+          </p>
+          <p> Moran 's warning on the night he locked Michael out had little effect but to make him more calculating. For so many years he had been protected by the cushion of the others that he alone in the house had no residual fear of Moran. When he was going to be late he now made some excuse. Moran was often tired which was reason enough for him not to stay up to check the lateness. But the sorest point was his constant need of money. </p>
+          <p>
+            <quote> 'You must think I 'm made of money. You must think money grows on bushes. You must think all I have to do is to go out and gather money like a few armfuls of hay for cattle. I had no money at your age. And none of the others in the house ever had the money you want.' </quote>
+          </p>
+          <p>
+            <quote> 'Everybody at school has money, more money than I ever have,' </quote> the boy said resentfully. </p>
+          <p>
+            <quote> 'Then their fools of fathers must have more money than sense. I can tell you there 's no money here. I can tell you that once and for all and for good.' </quote>
+          </p>
+          <p> Then Michael went to Rose. Again she gave him small sums. She was very fond of the boy, though by now, except for a coltish awkwardness, he was more man in height and strength than boy. All of them now looked forward to Christmas. Each night brought it one day nearer. The girls would be coming home and all of them would be together again under the same roof. Each dull night sharpened that anticipation. </p>
+          <p> Rose had already made the plum pudding. It lay wrapped in dampened gauze in the biscuit tin on top of the dresser. A week before Christmas Moran dragged a huge red-berried branch through the front door and dumped it in the middle of the room, filling the centre of the floor. </p>
+          <p>
+            <quote> 'What 's that doing here?' </quote> Rose asked in dismay. </p>
+          <p>
+            <quote> 'Didn't you tell me to look out for berried holly? You 'll not see much redder than that. I don't know how it escaped the birds.' </quote>
+          </p>
+          <p>
+            <quote> 'I said a few sprigs not a whole tree.' </quote>
+          </p>
+          <p>
+            <quote> 'Easier to cut the branch than pluck here and there among the thorns. Can't you throw out what you don't want?'</quote>
+          </p>
+          <p>
+            <quote> 'Oh Daddy, we just want a few bits for the windows and pictures. But the berries are beautiful. It 's such a pity to destroy a whole tree for a few sprigs.' </quote>
+          </p>
+          <p>
+            <quote> 'It 'd go to waste on the birds anyway. Better to have too much than too little.' </quote> He went out pleased by the mild censure of the tree of red berries lying in the middle of the floor. </p>
+          <p> It moved Rose to decorate the house at once in order to be rid of the huge branch, and Michael helped. In an hour bits of berried holly were twisted in all the picture cords and left in rows along windowsills and shelves. <quote> 'Daddy can never do anything by halves,' </quote> Rose laughed as they hauled the branch outside. It still had enough berries to decorate several houses and they both laughed in indulgent amusement. </p>
+          <p> During these weeks at the prospect of his sisters ' homecoming Michael returned to being a child of the house. He was poised on the blurred height, as eager to come down and be cradled and fussed over as to swagger and tomcat it out into the wild. Maggie crossed over to Dublin the night before Christmas Eve. She spent the day in Dublin and the three girls took the late train next day. </p>
+          <p> Moran left alone for the station. Michael stayed outside the house in the cold clear night until suddenly the lighted squares of the diesel train rattled across the darkness of the Plains. <quote> 'The train has passed!' </quote> he rushed inside to cry to Rose. In spite of the cold he kept opening the front door. Excited herself, and caught in his excitement, she had not the heart to tell him to keep it closed. <quote> 'They're here!' </quote> he called to her as soon as the headlights turned into the short avenue, and leaving the door wide open they went to meet the car. By the little wooden gate there were hugs and cries, eager kisses, the calling out of names, Sheila, Maggie, Michael, Mona, Rose, Rose, Rose, Rose, each name an utterance of pleasure and of joy. They were home, they were home for Christmas. Moran 's family were all, almost all, under the one roof for Christmas. They had come to what they knew best in the world. </p>
+          <p>
+            <quote> 'Look what I brought for Christmas,' </quote> Moran laughed proudly when they were all inside. <quote> 'Three fine women.' </quote> Words rushed against one another from the two who loved to talk, Maggie and Sheila, came to a stop against one another, laughed in impatience at each block, and rushed on. Mona was silent or spoke quietly. </p>
+          <p> By the time tea was taken everyone was quieter and each of them speaking naturally. All they had to do was observe the happy rituals: help prepare the turkey, remove the curtains from the front windows and light a single candle in each window, kneel to say the Rosary together, dress and get ready to go to midnight Mass. As they knelt on the floor, Moran began, <quote> 'In the name of the Father and of the Son and of the Holy Ghost we offer up this most holy Rosary for the one member of the family who is absent from the house tonight,' </quote> and the dramatizing of the exception drew uncomfortable attention to the disturbing bonds of their togetherness. </p>
+          <p> The three girls, Rose and Michael packed into the small car which Moran was driving to midnight Mass. They sat on one another 's knees and joked. <quote> 'I think you 've put on weight since you went to Dublin.' </quote>
+            <quote> 'Your knees haven't got softer anyhow since,' </quote> laughing and chattering away the discomfort of the physical constraint. Single candles burned in the windows of all the houses they passed and pinpoints of light glittered as far as the first slopes of the mountain in the sea of darkness. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/025.00000</textSigle>
+            <title>Fat Lad</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Glenn Patterson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-005$A">
+          <p> Goldfish? My granny had a goldfish once. It drowned. </p>
+          <p> The crack that lost him his virginity. Indirectly. A dreadful joke, if joke you could even call it, for there was no more to it than that: a drowning goldfish and a Northern Irish voice. And it was the voice, raucous above the babble, turned her head in the first instance, before the image congealed and made her smile and she began her evening-long drift round the tables of the Union bar towards its source. He watched her approach, knowing full well what lay ahead, amazed at how easy it was, when it came to the bit, to make the little betrayal in pursuit of success: <hi rend="italic"> it 's the way I tell them; </hi> the green and white minstrel. Amazed too, though not for the first time since arriving in England a fortnight before, at the unexpected effects of this thing coming from his mouth, this Belfast accent, his sister 's childhood nightmare. A stigma turned distinction. </p>
+          <p> Hours later, after last orders at the bar and drinks in someone 's room and a smoke in someone else 's, after faltering sex by the light of a reading lamp turned to the wall, it was the voice she came back to: </p>
+          <p> I could just lie here all night listening to you talk, she said, confirming what he had already thought, while putting the dampener on any hopes he might have had of trying to improve on his initial, dismal, coital efforts. </p>
+          <p> Her name was Kelly Thorpe, a languages student from Leicester: <hi rend="italic"> though my great-grandparents on my mother 's side were from Ireland, which is where I get Kelly. </hi> At Christmas she sent him a card in Belfast, with an airmail sticker in the top left-hand corner of the envelope. But by that time, the compromises of his fresher weeks long forgotten, he had fallen in with the Ex-Pats, a group of jaundiced exiles, sworn to renounce their birthplace and all its works, and Kelly 's misconception about the countries ' postal relations was no more ludicrous to him than the posturings of the earnest boys who stood every Thursday on the steps of the Union building, with their Harringtons, number one crewcuts, and armfuls of <hi rend="italic"> Troops Out </hi> papers, bellowing in best Home Counties accents: Support the revolution in Ireland! </p>
+          <p> Hugh McManus, final year law, guiding light and <hi rend="italic"> ex-iest </hi> of all the Ex-Pats, had harangued them, solo, one famous rainy Thursday, challenging them to define their terms — What revolution? What <hi rend="italic"> Ireland </hi> ? — and cutting to pieces each glib formulation with a flourish of his free hand (for one or other of Hugh 's hands was invariably entangled in the straps of a garish and voluminous vinyl shopping bag), till they, their hair sticking up like a teddy bear 's sucked fur and the thighs of their jeans wet where the rain had coursed down off the plastic sheets protecting the papers, were reduced to shouts of <hi rend="italic"> Paisleyite </hi> ! and <hi rend="italic"> Fascist </hi> ! Hugh McManus. The son of Belfast 's foremost Catholic solicitors. The brilliant Hugh McManus, shot to death last year at age twenty-nine by a gunman, or gunmen, unknown, following his successful defence of Father Fiacc, the Liverpool priest (dubbed Father Fear by the tabloids) accused of plotting to assassinate the Environment Secretary on a visit to a Merseyside garden fé/\ete. </p>
+          <p> Drew looked at his reflection, double-exposed (speccy eight-eyes) in the aeroplane window. Where did Hugh come from all of a sudden? The lips in the window rewound at speed and tracked in on the word goldfish. That bloody goldfish. Eight years and more after he could last remember having given it a thought, it had turned up in his dreams the previous night and was still there when he awoke this morning, going round and round in his brain as monotonously and pointlessly as it had used to in its bowl. </p>
+          <p> Grandpa Linden, who Drew knew only from photographs and yarns such as this, had brought the goldfish home with him a month or two before he died. </p>
+          <p> - Where 'd you get it? granny asked.</p>
+          <p> - A wee man Big Alec knows is selling them cheap. </p>
+          <p> There was always some wee man Big Alec knew selling something cheap. No questions asked, of course. Grandpa Linden asked none then, but from the day and hour it came into the house it was clear to his wife that that goldfish was never bred for life in a bowl. </p>
+          <p> - They 're special strain, grandpa hazarded. From Africa. From somebody 's pond up the Antrim Road, more like, she said, peering at the thing through cloudy water. </p>
+          <p> It was huge. Even at that early stage swimming backwards and forwards was out: round and round was all it could manage, or every once in a while, with a huge splosh as it performed a laborious about-turn, round and round in the opposite direction. </p>
+          <p> - We can't leave it in there, it 'll die. </p>
+          <p> But they did and it didn't; not for a good many years anyway and certainly not in the way Drew 's grandmother had in mind. But then, who ever heard of a fish drowning? Or rather, to give the thing its proper name, <hi rend="italic"> being drowned? </hi> For even when the goldfish finally did go (early April, mid-seventies, while Granny Linden took an Easter week in Portrush), it did not go of its own free will. Drew had pushed open the bathroom door one evening to find his sister Ellen kneeling on the oval mat, her arms plunged into the bathwater and the empty bowl on the lino beside her. She turned her eyes towards him briefly, then looked away into the water. </p>
+          <p> Get out, Drew, was all she said and when he saw her next she was at the boxroom window, pressing her face to the glass, causing ripples of mist to expand and contract about the imprint of her lips. Again and again, expanding and contracting, till the curtains were yanked together and the ripples contracted one final time in a slow-dying grin. </p>
+          <p> The <hi rend="italic"> fasten seat-belt </hi> command pinged red as the plane emerged from the mizzle and banked right, putting stern dark hills between itself and the lough shore on the descent into Aldergrove. And only then did Drew accept what was happening. Only then, despite everything that had gone before in the six chaotic weeks since he had read of the vacancy on the staffroom noticeboard — the letter of application, written on an impulse, then and there, the interview, the discussions, turning to rows, with Melanie, even the week-long visit to arrange a flat the month before (his first visit in four years and the only one since he graduated not occasioned by a funeral); all had been conducted in a bubble of unreality which popped now with the drop in cabin pressure. </p>
+          <p> The plane roared in towards the runway, hitting the tarmac with a bump. Impact of incompatibles. It reared up, as though affronted. <hi rend="italic"> Forget it, </hi> Drew felt like saying. <hi rend="italic"> Let 's turn round. </hi> But even while the thought was forming the plane was adjusting its speed and the second time there was no bump and he was back. </p>
+          <p> Only a year, he promised himself. Only a year. </p>
+          <p> No one was watching for him from the viewing tower, because no one knew to expect him. Drew took renewed heart from his foresight in not phoning ahead. Start as you mean to go on. The less he depended on the family the better. He was nearly twenty-seven, after all, and well used to looking out for himself. He had come back, he thought now, and he hadn't <hi rend="italic"> come back </hi> . For how could he be said to have returned to something that wasn't there before? The Belfast he left, the Belfast the Ex-Pats forswore, was a city dying on its feet: cratered sites and hunger strikes; atrophied, self-abased. But the Belfast he had heard reports of this past while, the Belfast he had seen with his own eyes last month, was a city in the process of recasting itself entirely. The army had long since departed from the Grand Central Hotel, on whose levelled remains an even grander shopping complex was now nearing completion. Restaurants, bars and takeaways proliferated along the lately coined Golden Mile, running south from the refurbished Opera House, and new names had appeared in the shopping streets: Next, Body Shop, Tie Rack, Principles. And his own firm, of course, Bookstore. </p>
+          <p> The doors opened on the arrivals lounge and a notice welcomed passengers no longer to Aldergrove, but to Belfast International Airport. </p>
+          <p> A groan rippled down the queue as they saw the size of the bus pulling in, a small nineteen-seater. </p>
+          <p> - Imagine sending a Flexibus, the woman behind Drew said, making <hi rend="italic"> Flexi </hi> rhyme with taxi, so that Drew wondered whether subconsciously she had established some analogy between function and pronunciation. </p>
+          <p> - All aboard the Pope-mobile, her friend said. </p>
+          <p> The bus driver fended off the jibes with a shrug of his shoulders. It was always the same when an English flight came in, never enough cover. </p>
+          <p> - All 's I do 's drive them, he said. </p>
+          <p> He wore gold-framed aviator sunglasses (though it was the middle of February) and rested a foot on the low dashboard as he dispensed the tickets: white sock, maroon shoe. </p>
+          <p> There 'll be another one in half an hour, he said through the closing folding door when the bus was full. </p>
+          <p> - Half an hour 's a lot of bloody use to me, a man with two children said and the driver shrugged again. </p>
+          <p> Drew, who had made sure he was at the head of the queue, snuggled down in his seat, closing his eyes and wedging his knees against the seat in front. Just as the bus moved off, however, the person beside him stood to let an old man sit down. Drew had seen him earlier at the baggage collection point, smiling at everyone — his smile an erosion in the folds of his face — and marked him down as one to avoid. </p>
+          <p> - That 's no day to be standing around outside, the old man said now and rubbed his thick purple hand together. They made a rasping sound like the pages of antique books. </p>
+          <p> - Just visiting? he asked. </p>
+          <p> It was as Drew had feared: a talker. He thought despondently of the long drive into town. </p>
+          <p> Business, he said, turning to the window. An off-putting word spoken in what he hoped was an off-putting manner. </p>
+          <p> But it was the worst thing he could have said. The old man took him for English and insisted on glossing the entire journey with his comments.</p>
+          <p> - This here 's a checkpoint, he said, when the bus slowed by a sign saying <hi rend="italic"> Vehicle Checkpoint; </hi> and a bit later, indicating the winter-stripped fields to the right and left of the road: We 're in the country yet. </p>
+          <p> Drew tried telling him that he was Belfast born and bred himself, but the old man wore a hearing aid and only smiled his canyon smile and nodded while Drew spoke, then turned in his seat the second he was finished to point out some house or other they had just passed, and Drew gave up explaining. </p>
+          <p> Where the M2 curved across the Shore Road below Whitewell and levelled out for the run-in to the city centre, his neighbour shook him yet again by the sleeve. </p>
+          <p> Here 's a thing here 'll get you, he said. See the whole of this stretch of road. See years ago? Even twenty years ago, I mean, even <hi rend="italic"> ten </hi> : All underwater. Would you credit it? Underwater. </p>
+          <p> He chuckled to himself, then stopped abruptly. His redrimmed lids blinked a bleary film over the surface of his eyes. </p>
+          <p> - Ah, boy, you could have fished out here and everything once upon a time, he said and Drew watched, horrified, as tears teetered on his eyelashes and plashed on the purple, rasping hands. </p>
+          <p> Drew appealed mutely to the people standing in the aisles, but they were all engrossed in newspapers and magazines. What could he do? He did what he always did in such circumstances: unhooked his specs from behind his ears, wipe-wipe-wiped them on a pulled-down sleeve kept unbuttoned for that very purpose, put them on, took them off, put them on again; then in desperation he pushed a Kleenex into one of the aged fists and faced the window once more. </p>
+          <p> - God spare me this old man 's double vision, he prayed. </p>
+          <p> What is is all. </p>
+          <p> And at that point he saw the road swell magnificently to ten lanes then burst into splinters: Bangor, Docks, Newtownards, City Centre, Westlink, M1, The West. </p>
+          <p> It was already dark by the time he reached the flat. There was a Telecom package waiting for him at the end of the landing by the front door. He dragged his suitcase inside and ripped open the padded envelope containing his new Viscount phone. The line had been reconnected that morning, though he had quite a hunt before he found the socket — in the passage between the kitchen and living-room, of all places. He 'd need a wall bracket. He sloughed the polythene wrapping off the handset and called Melanie. No reply. Friday evening. She 'd be doing her shopping. He remembered he 'd nothing in himself and wondered what to do about dinner. Phone out for something. But not yet. After reading the instruction leaflet for the central heating he set the thermostat and went into the bedroom to stretch out on the cold mattress. He woke at midnight and tried Melanie again. Still no answer. He fetched his specs and looked to see where the wall bracket would go, then decided it was too late now to eat. He made up the bed with the bedding he had bought last month and got inside. The smell made him dream he had fallen asleep in a department store. 
+                </p>
+          <EdCm> asterisk inserted </EdCm>
+          <p> Melanie balanced her glass on the arm of the chair and sucked a thread of lemon from between her teeth. Drunk. Good and drunk. Good, good. She let the phone ring. Good for me. She crossed the room for the gin, passing the hi-fi and starting a record up with her foot. The stylus bounced twice, like a stone on black water, before coming to rest in the middle of a track. He 'd have a fit if he could hear that. <hi rend="italic"> Dead </hi> scared. She kicked the turntable and the pick-up skited sideways. A zip being undone. Plus applause. The phone stopped ringing. Good again. Good riddance to bad rubbish. She sat on one of the cardboard boxes clumped in the centre of the room. It sagged and for some reason that made her snigger, which in turn made her sink further inside, so that her bum settled on the boards of his hoarded notebooks, and she laughed louder and louder, laughed till she thought she would cry. </p>
+          <p> She had left the theatre early this afternoon to pack his things. He hadn't asked her, didn't know; she 'd just decided on the spur of the moment. She was fucked if she was going to look at his leavings every day. Tomorrow they could go down into the cellar until such times as he sent for them. For so far as she was concerned, when he got on the plane today that was that. It wasn't as if she hadn't told him. From the minute — the second — the millisecond — he mentioned it she 'd told him. But he insisted: it was only for a year; in a year he 'd be a manager and have his own shop. . . . Of course he would, and she knew where too: Derry, or Londonderry, whatever it was he called it, or some other miserable hole over there. And all that big talk there 'd been through the summer of branches in Paris and Rome. For a moment she almost felt sorry for him. The first assistant manager 's position to fall vacant and it had to be there. Even Dublin wouldn't have been so bad. But she quickly banished all such conciliatory thoughts. He could have waited. Another post would have come along sooner or later. </p>
+          <p> A pair of tailor 's dummies stood back to back in the corner by the window. Two mud-brown velveteen lollies licked into approximate human shapes (the prototypes on which her occasional freelance creations were modelled), locked in a struggle they were powerless to resolve. </p>
+          <p> She got out of the box and returned to her chair, pouring herself another drink. 
+                </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/027.00000</textSigle>
+            <title>Smith</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Geoff Hill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-006$A">
+          <p> My name is Smith. </p>
+          <p> That much I do know. </p>
+          <p> I know also, from our last walk together, in the forest, that sloe berries turn from green to powdery blue, like bruises which refuse to heal. </p>
+          <p> Perhaps that only happens in this land, where nothing heals, where the faintest brush of yellow on skin soon becomes an open, running wound. </p>
+          <p> But I do not know perhaps. </p>
+          <p> I know that the dry husk of a pine cone chewed by rabbits is the colour of death in countries such as this. </p>
+          <p> And that the silvery flesh of dead wood in the summer is the colour of life in northern lands, where we should have gone. </p>
+          <p> There are many colours, that I know. </p>
+          <p> Because I believe that in colours you shall know the secrets of people, which they will not tell by themselves. </p>
+          <p> Whether they believe that they are the stillborn daughters of angels, or the stronger second sons of devils, on nights like this. </p>
+          <p> And I know that you can tell by their colours that people are dead, and objects are alive. </p>
+          <p> I can tell you that my stove is alive, with its six rings, its ghost feather of a pilot flame, its black and aluminium. </p>
+          <p> My stove was made by Garland of Canada. I bought it in the countryside, from a writers ' retreat which was closing. In a place dedicated to creativity, the stove was the only thing that lived, squatting black and superior in the empty kitchen. </p>
+          <p> I am alive, says the stove. When no one is looking, I confess, I have hugged my stove. </p>
+          <p> But that is only because you have gone, Jude, leaving me with stoves and visions. </p>
+          <p> I had a vision of the future last night, a future in which we could become a hologram of ourselves making love. </p>
+          <p> There could be three of me, plunging into every place, or five. </p>
+          <p> Or two of you. </p>
+          <p> It is my fear, Jude, to see a women being made love to by many men. </p>
+          <p> It is my fear, that it is always you I imagine. </p>
+          <p> You, who almost drove me mad with your sweet aversion to fucking. </p>
+          <p> What is the colour of fucking? </p>
+          <p> A dark and bitter red. </p>
+          <p> What is the colour of Jude? </p>
+          <p> The colour of innocence, covered with new dust. </p>
+          <p> What is the colour of these eggs I am boiling on my black stove? </p>
+          <p> The colour of swollen bellies, waiting. </p>
+          <p> What is the colour of the bottle of thawing champagne sitting on the old table? </p>
+          <p> The colour of Jack Nicholson 's smile, all sweet evil and glee. </p>
+          <p> What is the colour of the table? </p>
+          <p> The colour of uncertain good. Everything is uncertain tonight, and perhaps I do know perhaps after all. </p>
+          <p> But all these colours add up to hope, Jude. </p>
+          <p> Hope that I will hear your voice tonight, as if down the telephone from a distant land, telling me that my ticket is on its way. My ticket out of this fiefdom of tasteless dwarves to the land of tall and nobler people for which I have long awaited my visa. </p>
+          <p> In this land of one-eyed kings, only the blind are free. </p>
+          <p> So let us be blind to the past tonight, so that instead of our conversation tilting away into the doomed monologues that conversations became in the last days of our marriage, it will free me from the agony of hope that eats at me now. </p>
+          <p> Hope that you will hitch your shoulders and stretch, and I will ask you if your back is troubling you again. </p>
+          <p> That you will finish your glass and set it down, and in the breathing silence I will look out of the window to where the garden meets the trees, and ask you if you would like me to rub a little oil into your back. </p>
+          <p> That you will give me one of your knowing, sardonic expressions. The slightly amused version. </p>
+          <p>
+            <quote> 'No, I don't think so,' </quote> you will say. </p>
+          <p>
+            <quote> 'Just a shoulder?' </quote>
+          </p>
+          <p> That you will shake your head, tapping your cigarette into the ashtray we brought back from Amsterdam, as I refill your glass. </p>
+          <p>
+            <quote> 'Neck? An ear lobe?' </quote>
+          </p>
+          <p> That you will feign resignation. <quote> 'Would you like to see my new Panama?' </quote>
+          </p>
+          <p>That you will mime a tipsy despair. <quote> 'All right. But it 's very dangerous.' </quote>
+          </p>
+          <p> That I will lead you up to our old bedroom, my heart shaking the stairs. </p>
+          <p> Where are you, Jude? </p>
+          <p> It is the evening, and still you are not here. </p>
+          <p> I hope you are not late because you are angry. The thought of an evening again sitting across the loaded table is more than I can bear. </p>
+          <p> I have put some butter in with the eggs, to keep them moist through the shells, easing it off the knife and down into the winded water, melting there like the age-yellow shroud of a madonna, haloed by silvery bubbles of fat. </p>
+          <p> Now the eggs are steaming, fogging the window the way memory draws a veil across the past, and on the chopping board a mushroom lies beside the knife. </p>
+          <p> It is the evening, Jude, and the light is growing dim upon this table. It is the wise time of the day, and the fire in the other room is not quite lit, so that it seems there is no connection between the black surface of the coal and the flames that dance across it. </p>
+          <p> I worry, Jude, that you were the flames and I was always the coal. </p>
+          <p> I worry, too, that in the year since you left me, I have grown old. </p>
+          <p> That although my body is young, an oldness is creeping into it. </p>
+          <p> At the back of my left calf a clump of veins bubbles under the white skin, and my hands, blue turning blotched purple in cold weather, are the hands of my father. </p>
+          <p> An oldness creeps into my clothes, into the brogues which I spent the afternoon saddlesoaping. I allowed them to dry, then buffed the uppers into an amateur paradeground gleam. </p>
+          <p> Now they are beneath the table, their softened gleam shining nuttily up. </p>
+          <p> I confess, Jude, that when no one is looking I love my brogues. </p>
+          <p> Where are you, Jude? </p>
+          <p> It is the night, and it is raining. </p>
+          <p> There was a November once, when we were not long married, when I stood by the coalshed thinking of the music the rain made, because I knew that when I went back you would be in front of the fire in the other room. </p>
+          <p> I thought often in those days of us being in some foreign land of our own invention, some unnamed northern country where no one could touch us. </p>
+          <p> And that night, as I stood there in the dark with the rain on the coalshed roof, with the sound of coffee slowly getting ready, with the rain dripping cold on the crown of my head, it could have been the thaw in a land like that, with spring almost over us and summer like a field stretching to autumn 's far hedge. </p>
+          <p> I do not want to cross that hedge into another winter alone, looking at other men 's wives and burning for your beauty. </p>
+          <p> Because I know now that there are women whom everyone thinks are beautiful, and whom you can see are beautiful, but who do not make you burn. </p>
+          <p> After a time you cannot love women like that. </p>
+          <p> There are women whom you think are beautiful, but whose beauty no one else sees. </p>
+          <p> After a time you cannot love women like that. </p>
+          <p> There are women you think are beautiful from the moment you meet them, and who the world thinks beautiful too. </p>
+          <p> They are the ones who seek out madness, in themselves and others. </p>
+          <p> What I wanted from you, Jude, was a little sanity, a little binding of wounds, a little salvation. </p>
+          <p> What I wanted from you, Jude, was for you to be the fourth woman. </p>
+          <p> What is the colour of the fourth woman? </p>
+          <p> A dark and bitter innocence, covered with new dust. </p>
+          <p> The colour of your shoes, which you promised that you would wear today. </p>
+          <p> But where are you, Jude. </p>
+          <p> Tap. </p>
+          <p> I am drunk, Jude. </p>
+          <p> I have opened the champagne, and the rain has stopped falling from the frozen, methylated sky. </p>
+          <p> Drunk, I have put on my old black suit and shoes, a white shirt and a black bow tie, and I am sitting here at the table, drinking champagne and reading Antoine de Saint-Exupé/ery. </p>
+          <p> I am drunk, Jude. I think I am Antoine 's co-pilot, descending into the jasmine and cicada whirr of small desert towns, our breath frosting against the studded aqua sky and our sheepskin flying jackets bulky about us. </p>
+          <p> And among those thoughts, tiny misplaced thoughts keep spinning up like rocks thrown by our wheels: of my mother wiping a smear of oil from my cheek with her handkerchief, of the false, indoor smells of lipstick and cigarette smoke of it. </p>
+          <p> In this little dream within a dream, the smell of oil becomes the laborious, working smell of men, and the smell of the handkerchief becomes the smell of woman, of the glittering, faraway surface of all things. </p>
+          <p> When Antoine and I land we taxi jauntily up to the hangar and there is Biggles standing, half in the light. </p>
+          <p>
+            <quote> 'Hello,' </quote> he says as we climb down. <quote> 'Still got all my first editions?' </quote>
+            <quote> 'Of course,' </quote> I laugh. </p>
+          <p> He offers a cigarette, but I will not take it. His hands are fine-boned and effeminate, and I wonder then where I read that first. </p>
+          <p> Why are you not here, Jude? And what is that tapping from the door, when I cut the tree back last winter? Or was it the winter before? </p>
+          <p> You will be here, Jude, before the morning comes. I do not care how long you take, because there is no anger in me any more. </p>
+          <p> There is only the hope that you will arrive this night, wearing your bitter red shoes, so that we can stand in the clearing haze of morning, our feet firm beneath us. </p>
+          <p> That you will make heaven of this night, Jude, and bring the beauty of this earth into the day. </p>
+          <p> But I am drunk, Jude. I even wish you would come back and help me choose different curtains for the other room. </p>
+          <p> Tap; tap. </p>
+          <p> What is that noise? </p>
+          <p> It is the morning, Jude, and you have not come. </p>
+          <p> I have just awakened this minute, slumped over the table in the ether dawn. What is the colour of the dawn? </p>
+          <p> I do not know. </p>
+          <p> What is the colour of that sound, from beyond the door? </p>
+          <p> Black my clothes, and black my feet. </p>
+          <p> What is the colour of the door? </p>
+          <p> I cannot remember. </p>
+          <p> What is the colour of the shoes, which swing before me as I open the door? </p>
+          <p> A dark and bitter red. </p>
+          <p> Tap; tap. </p>
+          <p> What is the colour of that sound? </p>
+          <p> The colour of your death. </p>
+          <p>
+            <quote> 'There is a process,' </quote> said Smith, <quote> 'using a rich green with tiny flecks of gold. It 's very expensive, but very sumptuous in . . . discreet, expansive way.' </quote>
+          </p>
+          <p>
+            <quote> 'Mmm,' </quote> said the lawyer, who was trying to work out how something could be expansive and discreet at the same time. </p>
+          <p>
+            <quote> 'Like your suit,' </quote> said Smith. The lawyer was wearing a pure wool Prince of Wales check chosen for him by his wife. </p>
+          <p>
+            <quote> 'Mmm,' </quote> said the lawyer, who considered his suit expansive, but not quite discreet. </p>
+          <p>
+            <quote> 'We want every part of the house different,' </quote> said the lawyer 's wife. </p>
+          <p>
+            <quote> 'There 's a beautiful northern light on that staircase which I think demands it,' </quote> said Smith. </p>
+          <p>
+            <quote> 'Mmm,' </quote> said the lawyer. </p>
+          <p>
+            <quote> 'Of course we can afford it, dear,' </quote> said the lawyer 's wife. </p>
+          <p> I love screwing the lawyer even more than I love screwing the lawyer 's wife, thought Smith. </p>
+          <p>
+            <quote> 'Mmm,' </quote> said the lawyer. </p>
+          <p> Smith jumped, sure that the lawyer had heard what he thought. </p>
+          <p> The lawyer 's wife gave him a strange look. <quote> 'What about the carpet?' </quote> she said. </p>
+          <p>
+            <quote> 'Marrakech blue,' </quote> said Smith, who was thinking of a famous house he had seen in the desert, in one of his Biggles dreams. </p>
+          <p>
+            <quote> 'Really?' </quote> said the lawyer, surprising the three of them. </p>
+          <p>
+            <quote> 'I know just the thing,' </quote> said Smith. <quote> 'It will be perfect.' </quote>
+          </p>
+          <p>
+            <quote> 'I suppose it will,' </quote> said the lawyer 's wife. <quote> 'It always is.' </quote>
+          </p>
+          <p> Smith looked at the lawyer. Unless you looked at the lawyer regularly, it was easy to forget what he looked like. In fact, even now that Smith was looking at him, he would have been hard pressed to describe him. </p>
+          <p> What colour was the lawyer 's face? </p>
+          <p> The colour of all lawyers ' faces which manage to be both unhealthily flushed and unhealthily pale at the same time. The colour of most faces, in the land of the tasteless dwarves. </p>
+          <p> What colour was the lawyer himself? </p>
+          <p> No colour at all. </p>
+          <p>
+            <quote> 'Of course, we can afford it, dear,' </quote> said the lawyer 's wife, laying stresses down gently in all the right parts of her sentence. </p>
+          <p>
+            <quote> 'Mmm,' </quote> said the lawyer. </p>
+          <p> Of course they could Smith always recommended the most expensive materials, which made him very popular with the sort of people who pay to have their houses designed. </p>
+          <p> But Smith had done very little work since the day he found Jude. Just enough to live on, and barely that. </p>
+          <p> His dreams of anarchy had almost gone, leaving him a spear-carrier in the cruel empire of other people 's homes. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/029.00000</textSigle>
+            <title>Sweet Killough: Let Go Your Anchor</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maurice Hayes</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-008$A">
+          <head> ONE </head>
+          <p> PICTURES KEEP TUMBLING out of the filing cabinet of memory. Are they real? Or are they echoes of stories told or conversations half overheard? Or the whisperings and gossip of adults? Or the fantasy of a child surrounded by other children with active imaginations? </p>
+          <p> Sitting on Daddy 's shoulders coming down the Chapel Brae after first mass on a Christmas morning. It is dark - mass must have been at about six or seven o'clock. There are no streetlamps, but the lights in windows and through open doors all down the street to the corner are bright enough for navigation. The air, sharp and cold. The sky, perfectly clear, an arched dome studded with stars. <quote> 'That is the Plough – can't you see the shape? - those seven over the Water Rock. And follow those two, the pointers, to that very bright one. That 's the North Star, right over the North Pole. That 's where Santa lives.' </quote> Carmel, walking alongside, saw it at once. Not to be outdone, I saw it too, and identified the wrong pointers, and the wrong Pole Star, and the wrong starting point for Santa, who landed on the roof at night, as long as you were asleep, climbed down chimneys and filled stockings pinned to the mantelpiece or laid on the fender. The beam of the lighthouse sweeping the sky. First a long beam, then a couple of short ones. Regularly, every couple of minutes, providing our own illuminations, but no sign of Santa. Then home into warmth and light and breakfast. Then banging the table with a knife and fork at dinner time and calling for <quote> 'more turkey' </quote>. And running up to the chapel afterwards to see the animals in the crib and put halfpennies in the slot, which made the plaster angel on the collecting box nod her head in thanks. Creeping up with Carmel to look through the grimy, uncurtained windows of a nearly derelict house occupied by a gruff old man and seeing a body slumped in a chair before the empty grate, newspapers on the floor, rats eating them and nibbling at his toes. A young woman in a bathing suit of great elegance and style, diving off the quay into a full tide to impress her banker boyfriend and disclosing, to a small boy sitting on the edge, a hole in the bottom of her costume. A man potting a billiard ball with a flourish of the cue to end a break, and shouting triumphantly in a strange accent, <quote> 'In like a baird, Michael'. </quote> And since a baird was what Daddy shaved off with a cutthroat razor in the morning, it was hard to see how it could get into the pocket. Or a glass-sided hearse waiting in the gateway to bury the people across the road. Or crouching in the graveyard among the stones watching funerals. Or a widow who had been weeping at the funeral of her husband, spitting on the grave after the will had been read. Or the nuns in a group sitting on a rock, not noticing the tide coming in, until they stood like penguins in their full gear, long black robes and stiff white hoods, as the water rose around their narrowing perch, refusing offers from the girls to lead them to safety through the water, or from the bigger boys to carry them off, jumping from rock to rock, until a rowing boat arrives from round the pier to lift them off and carry them to dry land. Or standing by the bedroom window, frozen with fear, as a young man walks in through the open gate and picks up my new leather football, a present for my birthday, and walks off with it under his coat in broad daylight on a summer evening. And standing there for some time after he has gone, and running crying to the bar to complain, and Ray rushing out in a useless search up and down the street. And the shame, for years, of not having shouted out to frighten him off, or of not running for help in time, or of not standing up for my rights, and the suspicion of not having kicked up a row until it was too late to do anything about it. Or sitting in a boat holding onto the line streaming over the side, and feeling the tug and pulling in, hand over hand, until a twisting silver shape lodges itself under the keel, inaccessible. Or going on a long expedition with Carmel up the Point Road, past Barney O'Prey 's, and deciding the lighthouse is too far and taking a short cut towards the Institution across Ranaghan 's bog, up to the ankles in mud, having to jump ditches filled with water and across sheughs and stiles and barbed-wire fences until emerging on solid ground behind the chapel, and the distress and anger when we got home, late, bedraggled and dishevelled. Or a little man walking up and down at the corner explaining to other men: <quote> 'Finance - that refers to money matters.' </quote> Or Daddy coming back late on a special train from the Eucharistic Congress in Dublin with a green plate with a picture of the pope on it which hung on the wall over the room door for years, and praying all day that his train would not be stoned or burnt or wrecked on the way home. Or the parcels from the outside world at Christmas and Halloween, the turkey from Waterford wrapped in sacking with the postmark on the label, the barnbrack from my Kerry grandmother, made specially from ingredients she had supplied, wrapped in tinfoil from the inside of a tea chest, then in newspaper, then in brown paper, but still smelling sweet in the postman 's hands. And the weekly papers, sent after having been read, folded so as to allow the name and address to be written in the white space beside the title, and tied with cord: the <hi rend="italic"> Waterford Star </hi> and the <hi rend="italic"> Kerryman </hi> , and the Christmas number of the <hi rend="italic"> Cork Examiner </hi> , full of ghost stories - banshees, horseless carriages, headless riders, men carrying coffins who disappear over cliffs or into thin air, hearses and funeral processions appearing from nowhere, spectres rising from the sea and out of the air - enough to keep any young boy in the house for years with his head under the bedclothes. Visits to genteel old ladies who gave you tea and seed cake or Marietta biscuits. Hospitable houses where you would get a piece, a slice of baker 's bread spread with butter and sprinkled with sugar, or a soda farl or curranty cake. Or a yacht lying on its side, flat on the waves on a lee shore, the masts gone, the sails too, or the great geyser from the Sucken Hole, or the east wind in the winter, or the collier riding high on the evening tide as it sails light, or the train, or the brick, or the harvest, or the people and the sayings and the songs. </p>
+          <p> Why these memories and not others? Anything remembered is bound to be distorted, anything observed, seen through a lens, anything recorded, selective, but what I hope this account conveys is the experience of living in Killough in the thirties, seen through the eyes of a child. The picture is impressionistic, in places pointilliste, with image overlapping image and pigment on top of pigment, a constant interplay of light and shade, blurring, obscuring, fudging the edges, but in the end, I hope, viewed from a distance, and in perspective, conveying an overall sense of place and time and providing a feeling of what it was like to live there. The people who move in and out of my memory are not all the people of the village, or even the best or the worst of them. They are the ones who for some reason, perhaps a kindly act or a bizarre action, or perhaps only for a telling phrase or a snatch of a song, lodge in the memory and are imperfectly re-created. </p>
+          <p> In previous generations the romantic dream was of descent from noble blood, or great wealth fallen on hard times, leaving a latent residue of decency or pride or good breeding ready to be discovered by the appropriate fortunate circumstance or fairy prince. Then there was rags to riches, log cabin to White House, and greater merit in having made it on your own than through inherited wealth or privilege. And very often nowadays autobiographies seem to claim extreme poverty and hardship, to child abuse and harassment, and to the more exotic reaches of incest, sexual perversion, rape within the family and psychological torture and emotional deprivation. That I can claim none of these is not, I hope, a result of self-censorship or an impaired memory but of a reasonably happy childhood in a village community that was supportive, caring and generally compassionate. I shall try to avoid the Water Rock of self-glorification and the glair of self-abasement in recalling those days and that place. I describe people, perhaps not as they were but as I remember them. Events change too, and the order and sequence imposed by memory may not stand up to historical analysis or carbon-dating. Some people dominate in the mind of a child more than they might otherwise be entitled to, others are altogether forgotten, wiped from the tablets of memory. </p>
+          <p> If my mother looms large it is because she gave me most of the words, but it was my father who took me on the walks, and most of the people quoted were talking to him and not to the invisible child who eavesdrops and overhears, silently taking it all in. This is not intended as a moral tale, or social satire, or a history of Killough, or an autobiography, or to poke fun at people, or to hurt. It is a small bit of my memory, and an oblique tribute to the kind and decent people and to the small community who provided warmth and friendship and the wealth of their experience and a sense of belonging to me as a child. </p>
+          <head> TWO </head>
+          <p> THE IMMEDIATE STARTING POINT that jogs my memory is a faded sepia snapshot. Five figures sitting on a low sea wall alongside the road at low tide, a calm sea behind, and in the background, flat coastline on the other side of the water. The time, probably the summer of 1930. Four children and a young woman, two girls about six or seven years old and two toddlers, similarly dressed and clearly twins. It is a bright, sunny day. The little girls in summer frocks and ankle socks; the young woman, wearing a flowered dress, a coat and a cloche hat, sits solidly on the wall, conscious of the responsibility she has for the children, while the infants sprawl against her knee in a careless way, one more sober and sedate, the other full of repressed energy. Who are they? Why are they there? After the fleeting moment caught by the camera, what has life in store for these children? In the snapshot they are the focus, the centre of attention, the fixed point in the firmament. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/030.00000</textSigle>
+            <title>Reading Turgenev</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>William Trevor</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-013$A">
+          <head> Reading Turgenev </head>
+          <head> 2 </head>
+          <p> Mary Louise Dallon retained in her features the look of a child. In an oval face her blue eyes had a child 's wide innocence. Her fair brown hair was soft, and curled without inducement. Her temperament remained untouched by sophistication. Once in her life she was told she was beautiful, but laughed when the statement was made: she saw ordinariness in her bedroom looking-glass. </p>
+          <p> In the schoolroom next to the Protestant church Miss Mullover had once taught Mary Louise, and would have retained a memory only of a lively child had it not been for the same child 's sudden interest, at ten, in Joan of Arc – or Jeanne d'Arc, as Miss Mullover insisted upon. The saint was a source of such unusual fascination that Miss Mullover wondered for a while if the child possessed depths she had overlooked: an imagination that would one day bear fruit. But Mary Louise left the schoolroom with no greater ambition than to work in the local chemist 's shop, Dodd 's Medical Hall, and in that she was frustrated. Circumstances obliged her to stay at home, helping in the farmhouse. </p>
+          <p> In a different generation Miss Mullover had taught Elmer Quarry, who left her schoolroom to board at the Tate School in Wexford, nearly sixty miles away. The three Quarry children – Elmer and his sisters – came of a family that for many decades had been important in the town. The Dallons – out at Culleen – had struggled for as long to keep their heads above water. </p>
+          <p> In later years Miss Mullover observed from a distance the vicissitudes and worries that governed the family life of the Dallons, and the changeless nature of the Quarry 's domestic and mercantile routine. She noted that money meant as much to Elmer Quarry in his middle age as it had to his forebears, that generally he was as cautious as his father and his grandfather had been, that he abundantly enhanced the Quarry reputation for good sense and a Protestant order of priorities. In each generation for more than a century the inheritor of the Quarry 's drapery had married late in life, establishing himself in the business before he turned his thoughts to the securing of the line: the old house above the shop in Bridge Street had seen more that its share of young wives made widows before their time. So it was that in 1955 Elmer Quarry was still a bachelor and the only well-to-do Protestant for miles around. All over the county wealth had passed into the hands of a new Catholic middle class, changing the nature of provincial life as it did so. </p>
+          <p> The Dallons ' roadside farmhouse in the townland of Culleen had never been more than modest, and in 1955 even that modesty was considerably eroded: the whitewashed rendering was here and there fallen away, slates that had slipped out of place or cracked in half had not been replaced, a pane in an upstairs window was broken. Within the farmhouse, rooms were in need of redecoration; paint had chipped, damp loosened the tattered wallpaper of the stairway, the unused dining-room smelt of must and soot. Five Dallons lived in the farmhouse – Mary Louise and her sister Letty, her brother James, and her mother and father. </p>
+          <p> Standing on the edge of the farm 's twenty-seven acres, the house was three miles from the town where Quarry 's drapery had prospered for so long. On Sundays, driving into the town in their black, obsolete Hillman, the Dallons formed almost a quarter of the Protestant congregation; at Christmas and Easter the numbers swelled to thirty-three or – four. Elmer Quarry and his sisters were church-goers only on these festive occasions, but for the Dallons – especially for Mary Louise and Letty – the weekly occasion of worship provided a social outing they enjoyed. </p>
+          <p> The town was small, its population just over two and a half thousand. A turf-brickette factory had been opened seven years ago, where once there 'd been a tannery. There was a ruined mill, a railway station that was no longer in use, green-stained warehouses on either side of the town 's single bridge over its sluggish river. Shops, public houses, the post office, council offices, two banks, and other businesses offered employment, as did Hogan 's Hotel, three builders, a creamery, an egg-packing station and an agricultural machinery depot. The Electric Cinema was a going concern in 1955; the Dixie dancehall continued to attract Friday-night crowds. The Catholic church – on the town 's northern outskirts – was dedicated to the Virgin as Queen of Heaven; a convent – halfway up the town 's only hill – was of the order of the Sacred Heart. Boys were educated behind the silver-painted railings of the Christian Brothers' School in Conlon Street, and St Fintan 's vocational college offered opportunities to acquire further skills. Bridge Street, where the pink-washed Hogan 's Hotel and the principal shops were, was narrow and brief, becoming South West Street beyond the bridge. The gaunt, grey steeple of the Protestant church rose from a boundary of yew trees that isolated it from its surroundings. A pocket of lanes around the gasworks and Brown 's Yard comprised the slums. A signpost – black letters on a yellow ground – partially obscured a statue of Daniel O'Connell and gave directions to Clonmel and Cappoquin, Cahir and Carrick-on-Suir. People who lived in the town knew it backwards; those from the surrounding neighbourhoods sometimes regarded it with wonder. </p>
+          <p> Elmer Quarry first noticed that Mary Louise Dallon was an agreeable-looking girl in January of the year in question. He was thirty-five then, Mary Louise twenty-one. Paunchy – and as square-looking as the origins of his name suggested – he was attired invariably in a nondescript suit, mud-coloured, faintly striped. His receding hair, cut short, matched this shade; his features were small and regular, a neat configuration in the pale plumpness of his face. Elmer quarry was not a tall man, but bulky none the less, an entrepreneurial presence, as his father and grandfather had been before him. He was assisted in the drapery by his sisters, Matilda and Rose, both of them his senior by a few years and possessing a handsomeness that had been denied him. Neither were married and both were displeased when Elmer 's glances were cast in the direction of Mary Louise Dallon. Why should the status quo in the house above the shop, and in the shop itself, be disturbed? Quarry 's would sustain the three of them during their lifetime, withering, then dying, with the Protestants of the neighbourhood. Neither Rose nor Matilda was the kind to avoid facing the facts: already Quarry 's was a relic from another age. If the line came to an end the business would pass to distant cousins in Athy, who would probably sell it. </p>
+          <p> The present Quarrys remembered the time there were five assistants behind the counters, and an overhead railway network that linked the shop to the accounting office, carrying money and returning change in the hollow wooden spheres. There were just the three Quarrys in the shop now; the overhead system had years ago been dismantled and removed. But the red receipt books were as they 'd always been, stacked every evening by the tills that had been fitted. Elmer 's father had entered the accounting office every day only after the shop had closed its doors, when the clerk who returned the change in the wooden containers had gone home. But since there was no clerk now and since Matilda and Rose managed easily behind the counters, Elmer increasingly spent more time in the accounting office. Often he sat there staring down through the small-paned floor-to-ceiling window into the quiet shop below, at the rolls of material stacked on the shelves – nylon, chintz and silk, cotton and linen – at the spools of thread in their shallow glass case, and the dresses and suits on the window dummies. As still as these window dummies his sisters sometimes seemed, one behind either counter, waiting for another customer. Matilda like to be smart; Rose dressed drearily. Matilda had more of a manner with customers, the best manner of the three, Elmer knew. Rose preferred housework and cooking. He himself belonged more naturally with the ledgers. </p>
+          <p> The courtship began on 11 January 1955, a Tuesday. Elmer invited Mary Louise to the pictures the following Friday evening. He had no idea what was showing at the Electric, but he considered that didn't matter. Now and again, perhaps once a year, he and his sisters went to see a film because it had been talked about in the shop. He liked the News best himself, but Rose and Matilda enjoyed something light and musical. He naturally had to tell them he 'd invited Mary Louise Dallon. They continued to look displeased, but did not comment. </p>
+          <p> In the Dallon household the invitation came as a considerable surprise. Mr and Mrs Dallon – a thin, grey pair in their fifties whose appearance was so similar that they might have been twins – recognized all that it implied, and were well aware of the habit among the Quarry men of marrying younger wives. They talked about it in the privacy of their bedroom. Mrs Dallon made a special journey to the town, visited Quarry 's drapery, bought a spool of white thread, and reminded herself of what Elmer looked like by glimpsing him through the panes of the accounting-office window. It might have been worse, she reported to her husband on her return, and later – in the bedroom – they went on talking about the development.</p>
+          <p> Mary Louise 's older sister, Letty, and her brother James, who was older also, did not react as favourably. James – impetuous, known to be of uncertain temper, and remembered from his schooldays as being a little slow – declared the invitation to be an affront. Elmer Quarry was a man who never laughed and rarely smiled, born to be a draper. Letty – secretly annoyed that her sister had been preferred, not that she 'd have set foot in the Electric with Elmer Quarry even if he 'd gone down on his knees – warned Mary Louise about what might occur under cover of darkness and advised her to keep handy a safety-pin that could be opened at a moment 's notice. Some of Elmer Quarry 's teeth were false, she declared, a fact she claimed to have culled in the waiting-room of the town 's more reliable dentist, Mr McGreevy. </p>
+          <p> Mary Louise herself was terrified. When the invitation had come, Elmer Quarry following her out on the street to issue it, she blushed and became so agitated in her speech that she began to stammer. On her bicycle, all the way back to the farmhouse, she kept seeing Elmer Quarry 's square shape, and the balding dome of his head when he 'd bent down to pick up the glove she 'd dropped. Letty had gone out with a man or two, with Gargan from the Bank of Ireland two years ago, with Billie Lyndon of the radio and electrical shop. She had thought Gargan was going to propose, but unfortunately he got promotion and was moved to Carlow. Billie Lyndon married the younger Hayes girl. Letty had taken to saying she wouldn't be bothered with that kind of thing any more, but Mary Louise knew it wasn't true. If Gargan came back for her she 'd take him like a shot, and if anyone else who was half possible appeared on the scene she 'd start dressing herself up again. </p>
+          <p>
+            <quote> 'What 's showing?' </quote> Letty asked. </p>
+          <p>
+            <quote> 'He didn't say.' 
+                </quote>
+          </p>
+          <p>
+            <quote> 'Hmm,' </quote> Letty said. </p>
+          <p> Beggars couldn't be choosers, Mr Dallon reflected in the end. To marry either of the girls into the Quarrys would mean you 'd breathe more easily, and you 'd see the sort of future for the two who were left. Mrs Dallon reached similar conclusions: provided James didn't marry, the farm would sustain himself and Letty, he working the fields and seeing to the milking, she attending to the fowls. The place was right for two, comfortable enough. Three of them left behind would be noticeable, touched with failure, although no one was to blame; a family growing old together was never a good thing, never a stable thing. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/031.00000</textSigle>
+            <title>Kerry through its Writers</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Mary Cummins</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-014$A">
+          <head> The Sergeant </head>
+          <head>
+            <hi rend="italic"> Mary Cummins </hi>
+          </head>
+          <p> Past Lisselton, on the road between Ballybunion and Listowel, there is a spot in Ballydonoghue that divided my father 's territory from that of Listowel. There is a pub, the Thatch of the Half Way House and a stream near it, that marks the line. He pointed it out once. My parish ends here, he said. A bit self-conscious he was, using the language of another power structure. But that was how he saw his jurisdiction. There were other markers on the roads to Tralee and Limerick. </p>
+          <p> He knew them. Inside those boundaries he knew every stick, stone and person. In those days, in the Fifties and Sixties, he would cycle to those boundary lines frequently. The Listowel road was straight but up Doon and on to Rahavannig or Beale, he would push his bicycle up the hills, mount at the top and cycle down the other side. The other guards would do it too, in turn. </p>
+          <p> When he did not cycle out the country, he went for a walk every afternoon in winter. In summer, if it was fine, he went down to the Long Strand every afternoon for a swim. Like everything, he did it according to the rules. Wading out until the water was up to his chest he would swim parallel with the shore or swim in. He never went into the water before the end of May. He taught us to swim, holding up your chin while you flailed around trying to get the guts to lift your feet off the sea-bed. In those days there was only one lifeguard. There was usually at least one drowning every summer. For a day or two a pall of quiet and grief would hang over the town even though they were usually visitors and you would not have known them. </p>
+          <p> You could set your watch by him every day when he went to the post office at about a minute to four. He would drop all the brown envelopes with the harp on them into the box and then set off down to the strand, walking in long strides, sometimes as far as the Cashen. This was his routine from after the Listowel Races when Ballybunion closed down until the following Easter, if the weather was good, or Whit. </p>
+          <p> Walking back the Long Strand, he would take in deep breaths, sometimes stopping for a minute. On fine days, when you could see nothing except the glassy sea and the coast of Clare, the sea gulls swooping, he would say, <quote> "Isn't this grand. Think of all those people stuck in cities, working away in the heat and the smells. Look what they 're missing," </quote> he would say, before striding off again. It has given me a life-long habit of fast walking, tireless until I stop and realise how far I 've gone. </p>
+          <p> Before the sandhills skirting the golf course were eroded, there was an alternative route up and down the dunes, jumping over Kitty 's River. If he was busy, he would only go as far as the 6th, mostly to the 9th and sometimes all the way to the 18th hole. Then, in the days of less bustle on the golf links, you could cross over to the Sandhill Road. That was before the new golf club was built. Long before the brand new clubhouse that replaced it this year, was thought of. The Taj Mahal, some call it. </p>
+          <p> Sometimes we would go into the graveyard at Kilahenny and examine the graves and look at the new headstones. Then back up to the Main Street. He would tip his cap to most people. <quote> "Hello, men," </quote> he would say to small groups at corners. One woman used to say, <quote> "Gooday sergeant. How 's crime?" </quote> He got a kick out of that and would tell my mother when we got home. Sometimes, he would chuckle suddenly to himself – <quote> "How 's crime". 
+            </quote>
+          </p>
+          <p> On those afternoon walks he would wear a brown gaberdine coat (tweed sports jacket in summer) over his uniform. It was his usual attire unless we were going to Cork or Tralee or he was going to a family funeral. A few months ago, I saw a man coming towards me across the newsroom in <hi rend="italic"> The Irish Times. </hi> The face was familiar but it was his gaberdine coat over the blue shirt and navy tie that suddenly, after nearly 20 years, brought the image of my father back instantly. It was Lawrence Wren, the former commissioner. He had known my father and used to take Miss Carmody 's house, next to the barracks with his family sometimes in the summer. </p>
+          <p> A few times a year, we would go on a really long walk up to the Hill (Cnoc an é/air where Fionn and the Fianna were supposed to have fought a bloody battle) and down the other side by Moohane to Ahafona and up by East End. Townlands merged into other townlands. After Rahavannig there was Derra, the dividing line from Ballylongford. Then Lahasreagh and Ballynoneen. He knew where each started and finished. He knew who was in every house, who had died there, who had emigrated and who had trouble or secrets. On a long walk out of the town, he might tell you things but not much. He was compulsively, obsessively secretive or discreet. Sometimes he would spell things backwards for my mother and we would try to guess. Sometimes they would talk in Irish. We would try to keep up. </p>
+          <p> This discretion passed on through the wives of the other guards. They had a special relationship. While they were part of the general life of the town, the ICA, doing the brasses in the church and suchlike, they were also particular friends with each other. Often, it was only the jobs of their spouses they had in common but that common, almost familial thing passed on to them, like a mantle of responsibility. </p>
+          <p> Then, the barracks was the centre of most business. Spring had arrived when the boards went up outside the door with notices on them to say it was a breach of a by-law to allow thistle, ragwort or dock grow on your land. The guards did the census and everything else of an official nature so they knew everything. People had come to get passports, for references, numerous other minutiae. There was little welfare. My father would send people – mostly women who were left widowed or abandoned – to Dan Spring in Tralee. Neither he nor my mother ever talked politics, but it seemed to be taken as read that it was Dan Spring who got things done. On 15th August, Pattern Day, Dan Spring 's brother, Frank, who was the social welfare officer for the area, used our sitting room as the base for the annual ISPCC collection. There would be boxes everywhere and collectors coming and going. </p>
+          <p> There was no bank then in the town for much of that time. Some lending agency in Cork used to ring my father to find out about people 's credit worthiness. If you hung over the railings on the landing at the top of the stairs you could hear bits of the conversation. You could hear my father telling the man what size the farm or the business was, if they were a good bet. </p>
+          <p> The lost children, who turned up kicking and hysterical every Sunday afternoon in the summer, were kept in the kitchen until their parents, red-faced, cross, relieved and sweating, arrived to claim them. People, usually men, being taken to the asylum in Killarney were kept in the sitting-room until they were ready to leave. Long after I left home, for me, Killarney still only meant the lunatic asylum. In the summer we often went to sleep to the howls and rich, roaring language of drunks in the "lock-up" which faced onto the backyard. They would bang the doors and curse and swear until they passed out, exhausted in the tiny cell. </p>
+          <p> On Sunday afternoons, my father and mother would go for a different walk. More of a stroll, usually up Doon Road and back by the Cliff Road. Stopping and talking to others. Sometimes they would meet the nuns and he would come back with accounts of how we were doing. My two sisters were hard-working and conscientious. I was bored and brazen, with a name for being clever. I got away with a lot. He used to say I was like his mother. </p>
+          <p> She lived in Cahirciveen where he was born. My grandfather, who was in the RIC died young and left her with five sons. She reared and educated them on a tiny pension. She was supposed to be very strict and my cousin, Marian, who lived in Cahirciveen once told me that all the sons were terrifed of her. I remember going to see her with my father. Once she gave me a ten-shilling note. I remember my father telling me that when he joined the guards he used to send her <amp> pound sign </amp> 2 a month. This was out of his pay packet of <amp> pound sign </amp> 8. </p>
+          <p> My father was from Kerry and my mother from west Cork. The Cork/Kerry thing only surfaced around the time of All-Irelands when they would banter about which team was best. But my father never openly showed a particular affiliation to Kerry. Maybe it was being in the guards. He had worked briefly in Dublin after leaving the Depot and hated it. He talked about having to walk in pairs on the streets around O'Connell Street and the open cheek they got from the Dubliners. Strict and authoritarian, he had no time for that and was disparaging about the natives of the capital. He had worked in a few different parts of the country but hardly ever referred to them. </p>
+          <p> We never argued, never talked back until after we had left home. From time to time he would say that Dev had been right not to get into the War. The country was too poor. I never knew if he was trying to rise me when he said the worst day for the country was when the English left. When I was drifting first into communism, and then into wet socialism, he would never argue but usually had some missile to throw me off my stride. He had no time for Conor Cruise O'Brien. Any man who would leave his wife… He did not spell it out but his strength of feeling was palpable. To him, to do such a thing was a total abnegation of responsibility. It spelt feckless, irresponsible, selfish. When I was raving on about Noel Browne one day, he corrected something and said yes, he had done such and such but it was when he was in Fianna Fé/ail. Noel Browne in Fianna Fé/ail? My youthful idealism was severely jolted. </p>
+          <p> He was never judgemental, at least in a language we could understand. He would describe someone as a blackguard. A rogue or a rascal was a lesser evil. Sometimes he used that description with humour in his voice. The only work of totally dismissive reproof that he used about anybody – usually a man – was, <quote> "he has no savvy". </quote> To this day I don't know what it means, but in the way he used it, no savvy meant that someone was not the thing. It was the ultimate dismissal. </p>
+          <p> His pride in the Garda Siochana, or the Force, as he usually referred to it was cosmic. There was no other body of men like it, no better members, no higher standards. There was a sort of universal pride thing in it that was almost familial. When someone got promoted, or someone else 's children did well, it was almost as good as if one of us passed something. But also, if a guard broke a rule there was a muted sympathy in the air. There was no overt criticism. My mother used to talk sometimes about poor old this one or that one whom they knew from another place and who had a fondness for the drink or something. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/032.00000</textSigle>
+            <title>Kerry through its Writers</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Clairr O'Connor</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-016$A">
+          <head> Place and Displacement </head>
+          <head>
+            <hi rend="italic"> Clairr O'Connor </hi>
+          </head>
+          <p> My parents left home when I was fifteen. It wasn't unexpected but it was still a shock. Home was Limerick. Limerick city. My father said he was going home. Home to Listowel, Co. Kerry. Ever since I could remember he 'd been saying he would go home one day. Perhaps I had heard it so often, I no longer listened. When I was five he had said, <quote> "One of these days I 'll go back. Limerick is fine but it 's not home." </quote> Naturally I was confused. Limerick was the only home I knew. Kerry was for the holidays. Ballybunion, Stack 's mountain, Listowel, daytrips to Tralee. My mother came from Ballyalnan, a little village near Newcastle West, Co. Limerick. Summer holidays were divided between Kerry and Co. Limerick. </p>
+          <p> My parents boasted about the virtues of their respective counties. Did this move to Kerry mean that my mother had lost? An independent woman from a very early age, my mother left her village after her Inter Cert. and went to England to train as a nurse. A thrifty country woman she brought her rustic virtues to a war-torn London making delicious meals out of meagre rations to the delight of her city bred London nursing friends. On a visit home to visit her widowed mother and her sister she met Ned O'Connor on the train from Dublin to Limerick Junction. He proposed to her some months later having first checked out her Catholicity by writing to her parish priest in England. An almost priest, my father has remained fervent to this day. </p>
+          <p> They married two years later. My mother returned to Ireland to live. She got a nursing post in Limerick and my father worked in Shannon Airport, the duty free section. Unlike most of the women of my mother 's generation, she continued to work outside the home after she had children. Nursing was very important to her. She was a meticulous homemaker as well. A splendid plain cook, there was always a pot of home made soup available, brown bread, scones, pies and special cakes for birthdays and Sunday teas. A woman of tremendous energy she applied her skills at home and at work. Her children 's clothes were labelled and shelved. As a child, I both admired and felt intimidated by such order. As an adult I now realise that she probably insisted on such detailed order as a means of cutting off the criticism that was levelled at women who worked outside the home during the fifties and sixties. </p>
+          <p> I did not want to move to Listowel with my parents. I was in my Inter Cert year at school and pleaded impending exams as my excuse. But the truth was, I didn't want to leave the Shannon, my friends, the familiar geography of my existence; King John 's Castle, Cannock 's clock ringing the hours. I helped my parents pack and waved them Listowelwards with a smile. That night I howled my despair at their desertion into my pillow. I had got what I wanted but somehow I had lost. A hard one to figure. I had been left in the care of my aunt Mary until the end of the school year and my exams. Meanwhile my parents and my younger brother settled into the house in Convent Street in Listowel. I did not sleep that first night of their going. I hugged the night until dawn came. Then I got up and made a cup of tea. I trod warily, anxious not to wake my aunt. </p>
+          <p> I took down one of my grandmother 's cups from the top shelf of the dresser. It was stark white with a decoration of a single bare branch of an oriental looking tree. This tea set was only used on Sundays. I felt a delicious sense of trespass as I drank thirstily from its restrained elegance. I thought if my grandmother (my mother 's mother, Ita Nash) was here now I would be able to tell her of my confusion. She had lived with us until her death two years previously. She had been a playmate in spite of the generation gap. She allowed me to win at snakes and ladders and I enjoyed dressing up in her long dresses. A good musician, she played the fiddle, tin whistle and concertina. At family gatherings she played, my father and brothers sang and my sister and I danced reels and hornpipes. </p>
+          <p> As I sat there drinking out of the Sunday cup the morning after my parents ' defection it suddenly came to me why my father had been harping on about going "home" to Listowel for years. When my grandmother had died two years previously I was so distressed that a few days after the funeral I decided to leave home. I was thirteen at the time. I talked to my best friend Breeda about it. She was Breeda with two ee 's just as I was Clairr with two rr 's. I wanted to go to Newcastle West and its environs, my grandmother 's home territory. She had two sisters living within a six mile radius of each other outside the town. It was early January. I looked up the bus schedules and cashed in <amp> pound sign </amp> 5 of my post office savings and Breeda and myself headed for the country. I felt quite heroic. It was a stylish way to grieve, I thought – to go back to where my grandmother came from. </p>
+          <p> On arrival at our destination, I told the white lie that my parents knew where we were. There was still a week to go of the Christmas holidays from school. My relatives accepted my story. In that thoughtless way that children can, I did not think about the anguish my parents and Breeda 's would go through when they discovered we were missing. I banished them from my mind and gave myself up to the moment. I rekindled my spirits at the open hearth, stamped my feet on the front door mat of the flagged floor kitchen as I came in and out like my cousins did. I watched my grand-aunt make bread and listened to her stories of when she and my grandmother were girls. There were tales of dances at the cross roads and house dances galore, matches made at harvest times and egg money put aside for material for dresses. I tried my best to be useful. I took my turn with the goose duster and polished the black range with zebrite. My grand-aunt liked to bake in a pot over the open fire but her daughter preferred the range. Three days into my runaway visit, my grand-aunt and her two daughters took the pony and trap into Newcastle West. They promised to bring me a bag of bull 's eyes when they returned. They came back earlier than expected and in some agitation. </p>
+          <p> I learned that they had rung my mother at the nursing home where she worked. Sister had told them that Nurse O'Connor hadn't been at work for the past few days. Clairr and a friend had gone missing. My parents were in a terrible state. The gardai were doing their best but so far there was no sign of them. I was suitably mortified when my runaway status was exposed. Only then did the full seriousness of what I had done dawn on me. I wondered if we 'd be sent back to Limerick in the pony and trap. But no. The Volkswagen was seen as a more speedy vehicle for our return. My grandmother 's relatives did not scold us but it was clear that they thought we were "bold" for putting our parents through such needless worry. At home, I was greeted by a white-faced father and mother. According to my own logic, I explained I had to go away to be near my grandmother. My mother was furious. She said hadn't she enough trouble with her mother dying besides her daughter running off all in the same week. </p>
+          <p> My father said he could understand that I had wanted to be near my grandmother 's relatives at a time like this. A daylong funeral wasn't enough at all to have a proper conversation with all of the people who had come for my grandmother 's burial. If it had been in Kerry, the wake would have gone on for several days and I 'd have been so exhausted at the end of it that I wouldn't have had either the energy or inclination to run off anywhere. I was grounded for months after that, only released from the supervision of the household for school and music lessons. I wrote letters to my dead grandmother in my journal (a hardbacked copy book) complaining about the unfairness of it all. I wrote her replies as well. She was on my side of course. I wished that she could play me a tune to cheer me up. </p>
+          <p> As I drank from my grandmother 's cup in my aunt 's house the morning after my parents had left Limerick for Listowel, it occurred to me that my father was going home to Kerry to be with his own people just as I had followed my grandmother 's people to Newcastle West after her funeral. Twenty years in Limerick had not made him a Limerickman. It had copperfastened his resolve to return to his home town. And so, he had taken early retirement from Aer Rianta and gone home to Listowel to open up a little bed and breakfast business. My father 's mother, Katherine Kirby had died while still in her forties. Dead more than twenty years before I was born, obviously, I never met her. But from the earliest days she looked at me from photographs. Prim-featured, her hair always held under different hats, she looked at me and at the world as if she knew the measure of things. She played the piano well and married Bill O'Connor against her father 's wishes. He charmed every woman he met. Or so the story goes. I have no recollection of meeting him. </p>
+          <p> After Katherine died, he married secondly and begat a large young family. My father and his sister Kathleen, lived with other relatives instead of in their father 's house. Though my father has never said this to me, I think he must have had feelings of being dispossessed from that time. His need to go home to Kerry was a primitive one, to live again where his young romantic mother had played the piano for himself and his sister. Aunt Kathleen, my father 's sister, died when she was twenty six. I never met her but I 'm told I inherited her high instep but not her sweet disposition. In the mid sixties, when my father 's stepmother emigrated to England, eight years after her husband 's death, my father went home for good. He knocked the old house and built a modern one. The gate and yard face Convent Street and the garden overlooks the island where the Listowel races are held every September. </p>
+          <p> At various times in our early childhood, my brothers, sister and I had accompanied our father to the races in September. It was a wonderful feeling being released from the schoolroom when our Limerick friends <sic> where </sic>
+            <corr> were </corr> confined by school and its curriculum. The horses racing, the crowds, the town open for business were invigorating. We were treated to endless lemonade and chocolate. I brought home a leprechaun snowstorm and a cup and saucer embellished with shamrocks from one such outing. I bought them in one of those shops that sold everything from fertilizer to knitting needles. They cost six shillings and ninepence. And of course, there were my father 's relatives pressing half crowns and even the odd ten shilling note into the hand. </p>
+          <p> We didn't visit his cousin Nora and her husband at Stack 's mountain during race week. Stack 's mountain was for the summer. Nora had no children but was amazingly tolerant of us and our soft city ways – like wearing shoes in the summer for instance. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/033.00000</textSigle>
+            <title>The Wasted Years</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Mary Larkin</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-009$A">
+          <head> Chapter 1 </head>
+          <head> BELFAST, 1938 </head>
+          <p> The power went off, and as the looms ground to a halt the weavers changed their old, comfortable shoes for more serviceable ones, donned their coats and headed for the door. In spite of the glass roof light being whitewashed against the glare of the sun, stifling heat still built up inside the factory and they were relieved to escape out into the fresh air. One of the many mills that provided work for the people of the Falls and the Shankhill Roads, the Falls Flax Factory was situated in Cupar Street; right in the centre, at the 'T' junction where it curved sharply to the right and continued on up to the Shankhill Road to the Protestant districts, while the left-hand turn became the Kashmir Road and ran on to the Springfield Road and the Catholic districts. </p>
+          <p> Arm in arm with Rosaleen Magee, May Brady felt the tension ripple through her friend as they walked out of the gates on to Cupar Street. She knew what was causing Rosaleen such concern, or rather who, and sure enough, there he stood, about six feet tall, jet-black hair and eyes as blue as a summer sky. This was the third night he had been waiting outside the factory. But for whom was he waiting? Mr Blair 's secretary? Yes, it must be Miss Maynard he was waiting for. She was the only one May could picture him with, although May had seen and been dismayed by the look that had passed between Rosaleen and the handsome stranger on Monday night, the first he had been there. She was also aware that Rosaleen had her old work coat lying open, disclosing the fact that she had taken the time to remove the overall she wore to protect her clothes when working, and May could see that she was wearing one of her better skirts and a cream-coloured blouse that was just a few weeks old; a blouse that enhanced the fairness of her skin and lightened the green of her eyes. This was unusual, very unusual, because dust from the weft in the weaving shop got embedded into everything, causing a fusty smell, and it was customary to wear old clothes to work. </p>
+          <p> Why on earth is Rosaleen wearing her new blouse? May mused. Surely she did not fancy the handsome stranger? A small frown puckered her brow as she pondered. All the same, she must. Why else risk ruining the new blouse? Oh, don't be ridiculous! she admonished herself, but was unconvinced. Isn't she engaged to be married? </p>
+          <p> Rosaleen 's thoughts were running along similar lines to May 's. Why was she so aware of this man? In four months ' time she would be married to Joe Smith. Big, kind, handsome Joe. She loved Joe. So how come a single glance from a pair of blue eyes could floor her? She kept her own eyes demurely downcast, but she was very much aware that the man 's eyes never left her face, bringing a bright blush to her cheeks, and that when they passed him, he turned to look after them. </p>
+          <p>
+            <quote> "I wonder who the big hunk 's waiting for?" </quote> May muttered, with a sidelong glance, covertly watching Rosaleen 's reaction to her words. <quote> "Probably Miss Maynard," </quote> she continued, and jerked her head back towards the factory. <quote> "She 's the only one in there I can picture him with. I can't see <hi rend="italic"> him </hi> with a weaver or a winder." </quote>
+          </p>
+          <p>
+            <quote> "Who are you talking about?" </quote> Rosaleen asked, trying to appear disinterested and failing miserably. </p>
+          <p>
+            <quote> "Oh, that big, tall, handsome stranger that you never noticed," </quote> May answered crossly. She was annoyed with Rosaleen and showed it. Why couldn't she be honest and admit that she found him attractive? Unless . . . surely she couldn't find him <hi rend="italic"> that </hi> attractive? Oh dear God no, that would never do. <quote> "All the men around here wear Crombie overcoats and patent leather shoes that of course you wouldn't notice him." </quote>
+          </p>
+          <p> Hot colour brightly burned in Rosaleen 's cheeks. She could not understand why, but she did not want to discuss the man with May. Perhaps because he affected her so deeply. On Monday night she had been laughing when he had caught her eye and an electric current seemed to run like a live wire between them. Time hung suspended as they gazed in awe at each other. Just a few seconds, but it had filled her with rapture, and she had recaptured the feeling often in the past few days and hugged it to her. </p>
+          <p> Joe did not have this effect on her and she felt guilty and uneasy at her reaction to this stranger. Last night and tonight she had avoided looking directly at him, scared of the effect he had on her, but she had been very much aware of his scrutiny. </p>
+          <p> Now she muttered. <quote> "No, you 're wrong. Miss Maynard stops work at half-five so she 'll be long gone. It 's not her he 's waiting for." </quote>
+          </p>
+          <p> May shot her a sharp glance and saw the heightened colour. So, she <hi rend="italic"> had </hi> been giving him some thought and wondering who he was waiting for. </p>
+          <p>
+            <quote> "Who do <hi rend="italic"> you </hi> think he 's waiting for?" </quote> she asked, slyly. </p>
+          <p> But Rosaleen was no fool. She knew May 's curiosity was aroused and did not want to continue the conversation, afraid of betraying the emotions the stranger had aroused. She wanted to put all thoughts of him from her mind; his obvious interest in her made her feel uncomfortable. </p>
+          <p> Shrugging her shoulders, she cried gaily, <quote> "Oh, who cares?" </quote> And to change the subject, she asked, <quote> "Are you going out tonight?" </quote>
+          </p>
+          <p> She and May had been friends since their first day at primary school and only the arrival of Joe on the scene had come between them. They still had one night a week out together, a Friday night, and this they spent at the Club Orchid Ballroom. Joe did not like dancing but Rosaleen loved to dance and this way everybody was happy. </p>
+          <p> My was not hoodwinked. She knew Rosaleen was deliberately changing the subject, but decided to let her get away with it. </p>
+          <p> She gave a deep sigh. <quote> "No, I 'm washing my hair tonight and I 've some clothes to launder." </quote>
+          </p>
+          <p> Being the eldest child of a family of six, she preferred to launder her own clothes than have them done with the family wash. Her mother was inclined to boil everything together in an old tin bucket and many a jumper and cardigan had been ruined, hence her desire to do her own laundry. She envied Rosaleen, who had only one sister and who was lifted and laid by her mother. </p>
+          <p>
+            <quote> "Well, see you tomorrow." </quote> She squeezed Rosaleen 's arm before letting it go. <quote> "Don't do anything I wouldn't do." </quote>
+          </p>
+          <p>
+            <quote> "That gives me plenty of scope." </quote> Rosaleen retorted, with a toss of her head that sent the blonde hair swinging about her face, making May wish, not for the first time, that she was blonde and beautiful, instead of plain and mousy. </p>
+          <p> With a deep chuckle, she turned down Clonard Gardens which joined Clonard Street and ran down on to the Falls Road where she lived, while Rosaleen continued on up the Kashmir Road. </p>
+          <p> As she hurried along, her thoughts returned to the dark stranger. Why did he affect her so much? Chemistry, that 's what it was! If they were to meet and talk they would probably bore each other to tears. With this observation she relaxed and turned her thoughts to Joe. Kind, handsome Joe. Nothing must interfere with her plans to marry him. </p>
+          <p> Her first and only serious boy friend, he was a wonderful person who idolised her. He had put down a deposit on a house in Iris Drive, off Springfield Avenue, and was in the process of decorating it, for them to return to after their honeymoon in Bray. No greasing someone 's palm with a tenner for the key to a rented house; no for them! Not every girl was lucky enough to marry a man with his own business. Just a small business, dealing in wrought-iron gates and railings, but there was room for expansion, and Joe was full of plans for the future. No, she would be foolish to let anything interfere with their plans. Why, it was wrong even to think of another man. </p>
+          <p> Nevertheless, in spite of her good intentions, the minute the alarm clock shattered the silence on Thursday morning, her thoughts returned to the stranger and she jumped out of bed. Dampening her hair, she rolled the long blonde strands in curlers and left it to set while she quickly washed herself down in the draughty scullery and then ate the breakfast her father prepared for her every morning. Her father was a good man; there were not many like him. Every morning he was downstairs first, and after lighting the fire he prepared breakfast. Then, without fail, he carried a cup of tea and a round of toast upstairs to her mother, before departing for Greeves Mill where he worked in the flax store. </p>
+          <p> Once ready for work, with her hair swept up at the sides and hanging to her shoulders in the current page-boy style, she gave into the <sic> temption </sic>
+            <corr> temptation </corr> to use a little make-up. Just a little. A light touch of Pan-stick and a hint of rouge. She did not want May to notice and comment on it. </p>
+          <p> But alas, she may as well not have bothered. There was no sign of the tall, handsome, stranger outside the factory gates that night and she did not know whether to be glad or disappointed. </p>
+          <p> On Friday morning she was pushing away at her looms, lost in thought, when Betty Devlin came and stood beside her. She did not know Betty very well; a non-smoker, she did not therefore gather in the toilets where one met all the newcomers and was kept up to date on all the gossip. Knocking off the handle of the loom, Rosaleen gripped the comb and helped the loom to stop more quickly. Then, with a smooth, fluid movement, she exchanged the empty shuttle for a full one and set the loom in motion again, before turning to Betty, an eyebrow raised inquiringly. At the same time she removed the empty bobbin from the shuttle and put a new one in from the cage of weft that sat above the loom. Looms had to be kept constantly on the move or they left marks in the cloth, bringing the wrath of the examiners down on the culprit 's head. So keeping an eye on the three looms, she gave half of her attention to Betty. She guessed the girl was probably collecting for something; someone getting married or maybe someone retiring. </p>
+          <p> While Rosaleen changed the shuttle, Betty eyed her closely. She had known right away who her brother was talking about when he had described her. There were not many girls as lovely as Rosaleen and she could understand why her brother was attracted to her. </p>
+          <p> Leaning close to make herself heard above the clatter of the looms, she cried. <quote> "Did you notice a tall guy standing outside the factory a couple of nights this week?" </quote>
+          </p>
+          <p> To her amusement, colour flooded Rosaleen 's face and neck. Even her ears went a bright pink, causing Betty to laugh outright. </p>
+          <p>
+            <quote> "Obviously you did! You and half the factory! Well he was waiting for me. He 's my brother Sean and he wants a word in with you." </quote>
+          </p>
+          <p> Rosaleen found herself smiling in return. It was a long time since she had heard that expression: <quote> "Wants a word in with you". </quote> Not since she was about fifteen. Still, Betty was barely sixteen, so that would account for her using the term. Then the girl 's words sank in and she went redder still. He wanted a date with her! </p>
+          <p> She shook her head and said, <quote> "I can't. I 'm engaged to be married." </quote>
+          </p>
+          <p> Betty eyed her bare left hand in disbelief and Rosaleen quickly explained, <quote> "I don't wear my ring in here, the stone 's too big." </quote>
+          </p>
+          <p> That sounded like boasting, but it was the truth. Joe had invested a lot of money in her engagement ring, a huge solitaire. She had demurred but he had said, <quote> "May as well, while I can afford it. It `s an investment, so it is. A ring like that can only grow in value and . . . God forbid . . . if we 're ever stuck for money . . . well, it 'll be there." </quote>
+          </p>
+          <p> However, she was nervous when wearing the ring, it was an awful responsibility, and she would not dream of wearing it in the factory. </p>
+          <p> Betty shrugged and gave a rueful smile. <quote> "Oh, well." </quote> She forced an exaggerated sigh from deep in her chest. <quote> "Our Sean will be disappointed, but still I did my best." </quote>
+          </p>
+          <p> Deep blue eyes, just like his, laughed into Rosaleen 's. Then, giving Rosaleen a wink and a nod, Betty turned and made her way down the shop floor, weaving in and out of the fast-moving machinery with graceful steps and a seductive sway to her small, neat bottom. Very much aware that her progress was watched avidly by two fitters who were maintaining a loom. Rosaleen watched her for some seconds, amusement in her eyes, then turned her attention back to her work, but her action were automatic, her mind full of thoughts of 'Sean'. Imagine him wanting a word in with her. He had a cheek all the same. Sending word in like that, instead of asking her himself. This thought sent dismay flooding through her. What if he was outside tonight and spoke to her? The very idea of it made her tremble and she chastised herself: Stop acting like a fool! He means nothing to you. </p>
+          <p> One of the looms dwindled to a halt and when Rosaleen saw the flaw that had been caused by a broken thread, she muttered to herself as she let out the web and started to rip out the flaw. That 's what you get for daydreaming. Get your mind back on your work, you silly girl! </p>
+          <p> That night, keeping her head down, she gripped May 's arm and hustled her quickly through the gate and past the corner where he usually stood. Not even trying to catch a glimpse of his well-polished brogues, should he be there. </p>
+          <p> May allowed herself to be propelled along Kashmir Road in silence, a resigned look on her face, but when they reached Clonard Gardens she said, with a gentle shake of her head, <quote> "He wasn't there." </quote>
+          </p>
+          <p>
+            <quote> "What?" </quote> Trying to look indifferent, Rosaleen tossed her head and added, <quote> "I don't know what you mean." </quote>
+          </p>
+          <p>
+            <quote> "Ah, Rosaleen, be honest!" </quote>
+          </p>
+          <p> Shame-faced, Rosaleen muttered, <quote> "He 's Betty Devlin 's brother. He wants a word in with me." </quote>
+          </p>
+          <p> May gaped at her and Rosaleen laughed softly before repeating with a smile and a nod: <quote> "He wants a word in with me." </quote> She chuckled aloud at the idea. <quote> "Imagine! I felt about fifteen when Betty said that to me." </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/034.00000</textSigle>
+            <title>Walking Corpses</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Jack Holland</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1995</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-007$A">
+          <head> Prologue </head>
+          <p> Children with dirty faces smiled back at him. Their eyes gleamed in the light of the flames. A beautiful girl with thick dark clusters of curls hanging down to her shoulders was singing in Irish, unaccompanied. She just stood by the bonfire, there in the middle of the street, in the middle of a Catholic slum that for the last three nights had been under siege from gangs of Protestants, her voice rising above the crackling fire, and sang. And there was silence. The gangs of men and youths who had spilled from the corner pub to the pavement outside fell silent. The youths who had been laughing and joking at the makeshift barricade a little further up the street, they too fell silent, laying aside their sticks and clubs. It seemed as if the whole war-torn city was listening in the hope that her words would assuage its ugly wounds. </p>
+          <p> Four days before, Mickey Burns was standing on the pavement of Manhattan carrying a suitcase, waiting for a cab to take him to Kennedy Airport for the bonfire, enraptured, though he didn't understand a word of what she sang. Neither did his cousin, Tofer Curry, who sat next to him, sipping from a beer can. But somehow Mickey understood what the song meant more clearly than he had understood anything in his life before, or perhaps since. </p>
+          <p> Both cousins were weary. Three nights in a row they 'd been up without sleep. There 'd been riots, mobs rampaging in the streets, a nine year old boy murdered in his bedroom, others cut down on the road. The barricades were everywhere, blocking off the entrances to the warren of narrow side streets that made up the heart of the Falls Road Catholic ghetto. </p>
+          <p> Mickey had come for a holiday, to stay with his cousin Christopher <quote> "Tofer" </quote> Curry. Instead, he 'd never worked so hard in his life — not even in Vietnam. He helped erect barricades, patched up injuries; had even given an on-the-spot arms lesson to someone said to be in the IRA who 'd shown up with a Second World War carbine left over from some long forgotten campaign. And everyone knew him as <quote> "The Yank" </quote> . The women made him cups of tea and sandwiches and asked him what he thought of this place, and wouldn't he rather have stayed in New York? And the children with dirty faces and bright eyes followed him around asking him if he knew where Clint Eastwood lived, and if when he returned could he hide them away in his suitcase? </p>
+          <p> Since the barricades had been put up, the streets had come alive. There were bonfires, and the pubs never shut; impromptu dances were held at the corners and around the fires. All of the ghetto 's life spilled onto its pavements; the dourness, the sullen boredom of ghetto existence was swept away, people seemed to have shaken off the years of resentful obedience to hated authority. The very atmosphere was heady and electric with crackling rebellion. </p>
+          <p> She sang, and he fell in love. He did not know her name. He had never seen her before. He did not know from where she had emerged, nor to where she had gone. When she had finished and stepped out of the light of the fire and into the surrounding shadows, she vanished. But for the duration of that song, sad yet defiant, she was the embodiment of an experience that Mickey Burns would treasure for the rest of his life. An experience that had bound him to his cousin who was at his side for those unforgettable days, and through that profound blood-link he was joined forever to the city from whence his own people had come and whose suffering he had witnessed for himself. </p>
+          <p> She sang, and the whole city listened. But with the coming of morning, it resumed its murderous ways. </p>
+          <p> And Mickey would return to New York again, not knowing how it would end. </p>
+          <head> 1 </head>
+          <p> Dawn came with the promise of a good bright summer 's day. It was so quiet that the sound of the traffic signals could be heard clicking from the far side of the road. Green, orange red, green, orange, red to the empty road, idiotically busy, like chorus girls dancing in an abandoned theatre. Not one car had passed in hours. </p>
+          <p> Christopher Curry had not slept all night but felt wide awake. He had seen other dawns like this, crouched behind a rock overlooking a lonely road, waiting as now. Or years before, before the burnings, the barricades, the bombings; walking along a deserted road somewhere in England hoping only for the first car of the morning to come to thumb a lift. Such summer dawns always gave him a sensation of almost infinite optimism. The first car he thumbed would be certain to stop and take him to where he wanted to go. </p>
+          <p> He looked at his watch, and then at Tohill, whose face as usual was expressionless. Next to him, McCann was slumped in a corner near the window. </p>
+          <p>
+            <quote> "A great day for the shore" </quote> , McCann said with a sigh. </p>
+          <p>
+            <quote> "Can you swim?" </quote> Christopher Curry asked Tohill, who shook his head. </p>
+          <p>
+            <quote> "Aye — like a brick," </quote> he said. </p>
+          <p> The queer smell of burning rubber and petrol that hung in the air over West Belfast had filtered into the room. It mingled with the stale smell of cigarette smoke. </p>
+          <p>
+            <quote> "I can swim," </quote> said Curry, <quote> "but I wouldn't go near the beaches around here." </quote>
+          </p>
+          <p>
+            <quote> "Tofer 's a man for the Costa del Sol," </quote> McCann said, smiling. </p>
+          <p>
+            <quote> "He wishes,"</quote> said Tohill. </p>
+          <p> A little later a car came along and stopped at the junction. They listened to its engine ticking over. Then a milk cart rattled down the road on its morning delivery. The lights flashed red. It halted. </p>
+          <p>
+            <quote> "I'm surprised," </quote> Christopher Curry said, <quote> "after last night 's riots that they let it come into the area." </quote>
+          </p>
+          <p>
+            <quote> "They know it won't be touched," </quote> said Tohill. <quote> "The families need the milk." </quote>
+          </p>
+          <p>
+            <quote> "What if it stops here?" </quote> Curry asked, his eyes darting suddenly from the milk lorry to Tohill. </p>
+          <p>
+            <quote> "It won't. I checked with the ould ones last night when we took over. They shop down the road. They don't take deliveries now. Relax." </quote>
+          </p>
+          <p> After that a bread van came trundling towards the lights, full of freshly baked loaves, scones, baps and various cakes in long wooden trays. Christopher wondered if it would make the light But it was the third in a row that had to stop. He glanced at his watch again. They were due soon. Would they make it four? </p>
+          <p> McCann roused himself and checked everything. Tohill told Curry to make sure that McAreevy, who was guarding the old couple, had everything under control. He found them still safely out of the way in the locked back room. </p>
+          <p>
+            <quote> "They 're sleeping like logs," </quote> he told Tohill on his return. <quote> "McAreevy says they 've been no problem." </quote>
+          </p>
+          <p> A baby 's cry drew the three men 's attention back to the road. They tensed. A young woman was pushing a big baby carriage down the sidewalk, heading in the direction of the traffic lights. It was a Cadillac of a pram — the kind young mothers buy to show off their first baby. </p>
+          <p> She stopped and stuck her head into the pram. The baby was howling. It must have lost its dummy tit or something. What the hell was she doing out at this hour anyway, Curry asked himself. Tohill was pale, and kept checking the time. They were usually so punctual. </p>
+          <p> Both McCann and Curry looked at Tohill. He kept staring down the road. It was too late to back out now. </p>
+          <p> The baby stopped crying. The mother pushed the pram along more quickly. They heaved a sigh of relief. But when she reached the lights she halted. She began to push the pram off the curb, but as its back wheels hit the road she hesitated. </p>
+          <p> The sound of a vehicle made them all look left. They were coming. Tohill took a deep breath and squatted down, McCann beside him, ready to feed the belt of bullets into the M-60 general purpose machine gun. Christopher shoved up the front window. A breeze blew in, wafting up the curtains, intensifying the stink of melted rubber and burnt petrol. </p>
+          <p> A British army landrover came racing towards the light. Christopher raised his rifle to his shoulder. The lights turned orange. </p>
+          <p>
+            <quote> "The bastard 's tryin' to make the light," </quote> he whispered. The signal flashed red. The vehicle braked hard. Four in a row, Curry smiled to himself. </p>
+          <p>
+            <quote> "What 's the fuckin' rush, Sarge? Goin' to see your lady friend?" </quote> one of the squaddies in the back shouted in a thick Birmingham accent. </p>
+          <p> The driver had just waved the woman across the street when the first burst of Tohill 's M-60 punctured the landrover 's side, tearing out gaping metal craters. A soldier fell backwards onto the road, his side a mess of blood. Two others tumbled after him as Tohill raked the vehicle once more, splitting the driver 's head like a coconut halved by the blow of a machete. Curry fired again and again into the confused, panic-stricken group. One soldier was sent spinning onto the pavement as easily as a broken doll. </p>
+          <p> The young mother 's screams could be heard above the groans of the wounded and dying man. The baby was howling again. From somewhere above it all came the noise of a helicopter. </p>
+          <p> They dismantled the M-60 rapidly and made for the stairs. As Curry left his post, he glimpsed the woman and her pram. Her hands were in front of her face. The pram was splashed with the driver 's blood and brains. </p>
+          <p> At the back of the house the car and the delivery truck were waiting, their engines throbbing. Two men dressed in blue overalls opened the truck 's back doors as Tohill and McCann threw in the machine gun. Then, putting on overalls themselves, the M-60 operators climbed in. The truck was soon reversing down the alley. </p>
+          <p> Curry opened the car 's back door and concealed the dismantled armalite in the hidden compartment built into the floor. </p>
+          <p> The young woman who was at the wheel waited for him to jump in beside her. He hardly recognised her as the Deirdre Duggan he knew. Her hair was cropped short and she was dressed like a mousy office girl. The short hair made her eyes look larger and brighter. </p>
+          <p> They drove towards the far end of the alley and then turned a wide and leafy street. She was calm, unhurried. </p>
+          <p>
+            <quote> "I heard a woman scream," </quote> she said. </p>
+          <p> He nodded. <quote> "No problem. She wasn't hit." </quote>
+          </p>
+          <p>
+            <quote> "Thank fuckin' Jasus for that," </quote> Deirdre said under her breath. </p>
+          <p> Christopher glanced out the window. A British army helicopter was hovering above the street. </p>
+          <p>
+            <quote> "The fuckers have spotted us," </quote> he exploded. </p>
+          <p> Deirdre accelerated. Immediately there was a boom and the back windscreen disintegrated, showering them with fragments of glass. An army and police patrol was closing behind their car, a sharpshooter standing up, his rifle trained on them for a second shot. </p>
+          <p>
+            <quote> "Right at the junction." </quote> Christopher told her. She swung the car on the main road. The helicopter was now slightly ahead of them and banking in their direction. A short distance up ahead was an old abandoned factory. Its entrance was a rusting ramshackle gate. <quote> "There" </quote> he said pointing to it. </p>
+          <p> She gave him a perplexed glance. </p>
+          <p>
+            <quote> "There 's a way out the back onto the next road." </quote> he explained. In the side mirror he saw the patrol vehicle turn onto the main road and come after them. <quote> "We 'll dump the car inside." </quote>
+          </p>
+          <p>
+            <quote> "But the gear?" </quote>
+          </p>
+          <p>
+            <quote> "Fuck the gear!" </quote>
+          </p>
+          <p> Deirdre swerved right off the road. The car bumped up the little cobblestoned entrance way and collided with the gate. There was a crunching thud as the car smashed through. </p>
+          <p> They were in a narrow yard. On either side were warehouses, storerooms and high-ceilinged winding rooms; all were empty. There were large puddles of water where the rain had poured down through gaping holes in the roofs. </p>
+          <p>
+            <quote> "Get out," </quote> he ordered. </p>
+          <p>
+            <quote> "But ...." </quote>
+          </p>
+          <p>
+            <quote> "Go straight ahead, then make a sharp left at the foot of the yard. There 's an old office workers ' entrance at the back. It opens out on Mill Lane." </quote>
+          </p>
+          <p>
+            <quote> "But you ...." </quote> she insisted. </p>
+          <p>
+            <quote> "I 'll keep them busy. Now hurry, for fuck 's sake!" </quote> He reached over and opened her door. She heard a police siren. </p>
+          <p> Deirdre jumped out. Christopher followed her, but went to the back of the car. As she disappeared down the yard towards the rear entrance, he took the rifle from the compartment and ran into the winding room. </p>
+          <p> The damp heavy smell of flax still lingered in the air. His mother had worked in this factory years ago when he was a boy. Then it had bustled with mill girls. They always fussed over him because of his mop of curly black hair. His mother was dead and the mill girls were long gone, their winding looms turned to junk. Now the floors were covered in pigeon shit. It was a dead, dank place, like his past and the world he knew. </p>
+          <p> So this would be the spot — the place of his very own Alamo, where he would enter the realms of Republican martyrology. </p>
+          <p> Outside, the Brits braked sharply, and the roar of the descending helicopter shook the factory and made in rattle like a pile of old bones. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/035.00000</textSigle>
+            <title>Touch and Go</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Sam McAughtry</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-003$A">
+          <head> TOUCH <amp> ampersand </amp> GO </head>
+          <head> SAM McAUGHTRY </head>
+          <head> ONE </head>
+          <p> DOWN IN THE CENTRE of Belfast, only twenty minutes ' walk away, the Court of Criminal Appeal was hearing my case. For some reason nobody had told me that I wasn't going to be there. For the next two days the courtroom would be full of men with wigs and gown and nothing in their heads but disputation. They would play the legalistic game, read from law reports, spectacles on the end of their noses, determining whether this strand of evidence should be accepted or that one rejected. It didn't seem right that they should do this without my being there, to see and to be seen. It might help to remind them of just what it was they were about. </p>
+          <p> Two and a half days and then I would know. Months ago, through all the preliminary appearances and through the trial itself, I had made for myself artificial horizons beyond which I had taught myself not to look, one for each of the early court hearings, one for the trial, one for the appeal, one for the decision of the Minister of Home Affairs as to whether or not he saw any reason to interfere with the due course of the law, and then, of course, only one horizon would be left. </p>
+          <p> At the end of my trial I had taken the sentence well. The papers had all said so. <quote> 'With composure' </quote> , that 's how they 'd put it. But when, in two and a half days, they would come to tell me the outcome of the appeal, when I came to the limits of that horizon, there wouldn't be any reporters to tell how I 'd take it. I could react in any bloody bastarding way I felt like reacting. It wouldn't matter to anybody except myself. </p>
+          <p> I should have paid more attention when the lawyers were setting out to me the grounds of my appeal. If I had, I 'd have been better able to mark the long hours. As it was, all that I could do was listen to one screw of the deathwatch saying the Serenity Prayer, the boozers ' doxology: <quote> 'God grant me the serenity to accept the things I cannot change, the courage to change the things that I can, and the wisdom to know the difference.' </quote>
+          </p>
+          <p> It was all right for him - he was going home when his four hours were up, he could look for serenity and courage and wisdom and feel the wife 's leg at the same time. But over in England in a pub called Help The Poor Struggler, Albert Pierrepoint, the public executioner, would be reading about me. I knew all about him. In another world, at another time, Dicky Walters had told me, and Dicky had studied Pierrepoint the way Newton had studied gravity. </p>
+          <p> The hangman was a wee man, liked to sing Irish songs and do conjuring tricks in the bar. If - when - the Court of Criminal Appeal rejected my submission, it would give me three clear Sundays and then I would take a walk. The day before the execution, Pierrepoint would arrive at Crumlin Road jail with his bag. In the bag would be the straps, the rope, the shackle, and the white cap. </p>
+          <p> When the time came for the wee cunt to slip the white cap over my head, my eyes would have looked on the last horizon. </p>
+          <head> TWO </head>
+          <p> THE BOAT TRAIN FROM Larne slowed just by Jennymount Mill. Mother had worked there as a weaver before she 'd married Dad. She 'd always been proud of it. Weaving was clean work, not like spinning or doffing; weavers didn't stand in water with their skirts hoisted up to the houghs. </p>
+          <p> My poor, lovely mother was the reason I was here. Twenty-four hours earlier I 'd been in Bari, Italy. </p>
+          <p>
+            <quote> 'I say, Reilly, may I?' </quote> The C of E padre was a nightly piss merchant. Life was funny: he could preach Christianity with a hangover and a clear conscience, while I, an atheist, felt as guilty as sin about my boozing. </p>
+          <p> I nodded him into the office. When my flying was over they 'd made me a staff officer at Air HQ Bari, helping the Eyeties re-form their Regia Aeronautica. </p>
+          <p> The padre shimmered in, like Jeeves. <quote> 'I 'm afraid it 's not good news, Paddy.' </quote>
+          </p>
+          <p> I was in no condition to hear bad news. It 's something I 've said to some brass hat last night, I thought. Christ, maybe I 've insulted the air vice-marshal. As usual, my sweat seemed to stink like sewer seepage. </p>
+          <p>
+            <quote> 'It 's your mother, and I 'm sorry to say she 's seriously ill.' </quote> He squeezed my arm. Padres are great touchers. <quote> 'Deeply sorry.' </quote>
+          </p>
+          <p> To be truthful, all I 'd felt at first was relief. Drink blackouts begot daymares. Only a couple of weeks earlier, on Christmas morning, I 'd woken up to learn that the previous evening I 'd bopped a fellow officer. He 'd disputed my version of <head> 'The First Noé8el'. </head>
+            <p>
+              <quote> 'She didn't say anything in her letters' </quote> was all I could say. </p>
+            <p>
+              <quote> 'Well, mothers don't, bless them.' </quote>
+            </p>
+            <p> At least with an excuse like this nobody could blame me for beering it up. But they didn't give me time to do it at Bari. When a staff officer was posted away the air vice-marshal liked to have a word, but in my case there was no invitation. It was Johnny Watson, the camp commandant, who said goodbye: <quote> 'Mind yourself, Hugh. I 'm sorry about your mother.' </quote>
+            </p>
+            <p> Mind yourself. </p>
+            <p> I 'd got used now to my real friends telling me to mind myself. Johnny Watson was fair-haired, blue-eyed, a public schoolboy pilot, going for the law when he was demobbed. We were close, having been squadron buddies. Afterwards Johnny had saved my bacon a good few times on the HQ campus after piss-up balls-ups. </p>
+            <p> He smiled and shook my hand. <quote> 'Just bloody take it easy, you old bugger. You made it through the war – don't cock it up in civvy street.' </quote>
+            </p>
+            <p> He 'd got me priority all the way to London. I was on a Communications Flight Anson to Pomigliano in two hours, and fixed up in a Dakota to Blackbush after another two. A day in London, strangely sober, sipping half-glasses of beer like an Englishman, walking into Cox and King 's Bank to draw the first pounds sterling I 'd seen for three years. The soft-eyed woman in the bank smiled at me. <quote> 'I do all the air force officers ' accounts beginning with R and S. I know all my officers. So glad that you got through all right.' </quote>
+            </p>
+            <p> The train, groaning and squealing, drew into York Street station. I grabbed my cases, swung down on to the platform, and walked quickly towards the barrier, one of a crowd of returning soldiers, sailors, airmen and merchant seamen, with their suitcases and their kitbags, their wary eyes, and their thoughts. Relatives, friends, sweethearts, waited on the other side of the barrier. Women were crying, being lifted, swung around, feet off the ground; fathers, brothers, shaking hands. </p>
+            <p> I saw our Bill, in his dungarees. He put out a hand, but when I came up to him I laid my cases on the ground, put my arms around him, and it was touch and fucking go for crying. </p>
+            <p> He was seventeen, with a face more innocent than mine ever was. He took a case, we went out of the station, past the taxis with the gasbags on their roofs, on to York Street. I pointed Bill towards the Edinburgh Castle on the other side of the road. Halfway there we were halted by a convoy of heavy carts coming up from the deep-sea docks nearby, the huge draught horses striking sparks from the granite square setts. </p>
+            <p> The road cleared and we crossed to the bar. Inside, in the just-opened smell of disinfectant, Brasso and whiskey, I ordered a short for myself and a mineral for Bill. We sat down beside a soldier in web equipment. I smiled and looked Bill over. His hair wasn't as dark as mine, more of a brown than a black. His eyes were blue and wide and innocent; mine were brown, after Mother 's side. He reached up to about the bottom of my ear. When I 'd joined up six years earlier, he 'd only been four hands higher than a po. </p>
+            <p> I thought of all the things I 'd done that he hadn't. When he was twenty-five he wouldn't be needing the whiskey, for one thing. But it was gorgeous to be home. Bill was looking at me as if I was Gregory Peck. He took a sip of sarsaparilla. <quote> 'Flight lieutenant pilot,' </quote> he said. <quote> 'Tommy Boyd 's brother 's only a sergeant cook.' </quote>
+            </p>
+            <p>
+              <quote> 'Up Tommy Boyd, then, with a wire brush.' </quote> I sank the whiskey, pretended to punch him on the button, and rose to go. </p>
+            <p> Walking up Duncairn Gardens, I looked around at the city I 'd left behind three years earlier, in January 1943. The blitzed ground between houses was overgrown with weeds and wild grass, and moss had softened the tops of the broken walls. Civilians walked past with their heads down, the women in headscarves and tight-pulled winter coats, the men in grey or brown raincoats and duncher caps. They walked like a people who had lost a war. </p>
+            <p>
+              <quote> 'How 's Mother?' </quote>
+                    Bill didn't hesitate. <quote> 'She 's very serious.' </quote>
+            </p>
+            <p> It was the first time I 'd really thought about her since I 'd heard the word from the padre. She was often out of sorts, but seriously ill was a bit much. </p>
+            <p> Right through the war, she 'd written to John and me once a week. If there were other letters, Mother 's was opened last. I loved her, but there was never anything very interesting in a letter from a mother, except maybe the catalogue of casualties among the guys who 'd grown up with me. When her weekly letter had stopped about eight weeks earlier I 'd hardly noticed. </p>
+            <p> On the other hand, I had written to her and to Bill just about every other day since February 1940, when I 'd enlisted. Mother used to tell me in her letters how much she and Bill looked forward to them. <quote> 'If your daddy was here he would be so proud of you, a pilot. I keep all your letters,' </quote> she 'd say </p>
+            <p> Writing letters was a compulsion with me. I had kept up contacts with other aircrew mates, as well. The educated ones never knew that by their letters they were educating me, sparking up my writing, lending to it the shine that Mother had liked so much. </p>
+            <p>
+              <quote> 'John 's home, too,' </quote> Bill said. </p>
+            <p> Lovely. Bloody lovely. </p>
+            <p>
+              <quote> 'He has no good word for you, Hugh. Never had, and he hasn't changed.' </quote>
+              <quote> 'That doesn't surprise me.' </quote>
+            </p>
+            <p> We turned the corner of the street, and the two old Nesbitt dames were at the door. I 'd forgotten about them, the Nesbitts, small and lonely, living their lives at the front door, one on a stool, the other leaning, arms folded, against the doorpost. Maudie, the elder sister, pointed as we appeared, and she and Agnes made squeaky noises of surprise and welcome. I took Agnes 's hand and made to do the same with Maudie, but she held me at arm 's length and peered up at me. <quote> 'You went away a boy, Hughie, but you 've come back a man that 's seen too much,' </quote> she said. </p>
+            <p> Bill had knocked the door and Maudie was kissing me when it opened. It was John. </p>
+            <p>
+              <quote> 'Huh. The Brylcreem boy 's home.' </quote>
+            </p>
+            <p> With one glance he took an inventory, from top to toe. I could have done with a haircut; my tunic was wrinkled, the buttons tarnished. I needed a shave; my shoes were muddy and neglected. He gave another snort: <quote> 'The Household Cavalry!' </quote> He turned away. No handshake, nothing. I followed him up the narrow hall, with its creaking, sagging floor. The joists and doorframe had never been the same since the 1941 air raids. In the tiny kitchen I felt oversized and awkward. Dropping my case beside the other one just inside the parlour, I hung my greatcoat over the banister. Before I had time to do anything else John called me: <quote> 'You 'd better come up.' </quote> He was halfway up the stairs, looking down impatiently. I fell in behind him. He was in army undress, khaki shirt, trousers, and white canvas braces. Barrack-square creases angled through his broad backside; his boots had a high, bullshit shine. </p>
+            <p> Aunt Nellie, Mother 's sister, was waiting outside the back bedroom. She kissed me, held me close, then she let me go and backed towards the front bedroom, out of the way. </p>
+            <p> John spoke round the door of Mother 's room: <quote> 'Hugh 's home, Mother. He 's here.' </quote> His voice was soft. With a jerk of the head I was invited to go in. </p>
+            <p> A low-watt bulb shone weakly through an orange-tinted shade; yellow morning light filtered through an off-white paper blind, three-quarters drawn. The room was set for a dying. It was full of the scary-sweet bedpan smell of the deathbed. </p>
+                The double bed filled most of the room. I walked around the end of it on the lino, past the tiny hearth, marking the places where Dad used to land his burning Woodbine butts. </p>
+          <p> Mother, in a pink flannel nightdress and a woollen bed jacket, lay against high-heaped pillows. Her hair was soft, pinned back loosely. I dropped to my knees beside her. She was so weak that she couldn't turn her head towards me, only her eyes moved, and I bent over her, to make it easier. </p>
+          <p> Her eyes were so sunken that the lids seemed to rest above them, out of contact. The skin was clapped tight to her skull. What had once been wrinkles were now lines drawn on parchment. </p>
+          <p> I kissed her brow. It felt hot and dry. Her hands rested on the turned-down sheet and I took one in mine. She no longer had a bosom. </p>
+          <p> Aunt Nellie had come into the bedroom. She stood, with John, at the door. She was Mother 's younger sister and she looked as Mother had looked the day I 'd left to go overseas - strong black hair, going grey, rolled-up sleeves, energy and bounce in every line of her. <quote> 'There now, Betty,' </quote> she said, <quote> 'that 's Hugh home, too. They 're home to see you, your two lovely boys. And Hugh 's an officer and all.' </quote>
+          </p>
+          <p> The lips fell back from the putty face; I had to bend to hear Mother 's voice. <quote> 'Aye.' </quote> It was a whisper, fighting to get out of a sigh. </p>
+          <p>
+            <quote> 'Hello, Mother.' </quote> I felt the stick fingers move in my hand. They searched along my own fingers, then came the voice again. </p>
+          <p>
+            <quote> 'Your ring?' </quote>
+            <quote> 'It 's downstairs. I was washing myself and left it on the mantelpiece.' </quote> As I spoke looked up. Bill had joined the others, but it was to John that my eyes went. His contempt was clear, for the lie about the ring. </p>
+          <p> I stood up. The bedclothes had fallen away from her and I took the edge of the sheet to draw them up, but John 's voice stopped me: <quote> 'Watch it, for heaven 's sake, she 's in agony, can you not see that?' </quote>
+          </p>
+          <p> I straightened, kissed her again, and followed John and Bill. Again I had the cloddish, clumsy feeling as I went back downstairs. I had forgotten how small the house was. The feel of it hadn't come back to me yet. </p>
+          <p> Down in the kitchen I undid my tunic, hung it in the hall. Aunt Nellie handed me tea in one of the best china cups: Mother 's wedding present. The cup rattled and shook so much in my hand that some of the tea spilled into the saucer. I set them on the carpet and lit a cigarette. John and Bill and Aunt Nellie were watching. </p>
+          <p> It was the woman who showed understanding, as I felt the sweat break. <quote> 'You must feel strange, back home again, after three years.' </quote>
+          </p>
+          <p> I nodded, tried lifting the saucer again and made it. As I drained the tea I could feel John 's eyes going over me. </p>
+          <p>
+            <quote> 'What kind of job were you doing at Air HQ?' </quote> Bill asked. He was ready to commit the details to memory for transmission at Canning Street corner that night. </p>
+          <p>
+            <quote> 'I was helping the Eyetie air force to re-form,' </quote> I told him. </p>
+          <p>
+            <quote> 'Bunch of bloody ice-cream <sic> seller </sic>
+              <corr> sellers </corr> ,</quote>'<quote> John growled. 'They were about as much good in the field as a troop of the Girl Guides.' </quote>
+          </p>
+          <p>
+            <quote> 'Actually, their pilots weren't that bad,' </quote> I said. <quote> 'It took a lot of nerve to fly some of the out-of-date kites that they had. Our fellows were knocking their SM 79s out of the sky with no bother, and their fighter pilots in the Machi 202s were no joke. They got a good few of ours.' </quote>
+          </p>
+          <p>
+            <quote> 'All the same, it 's great, you being an officer and all,' </quote> Aunt Nellie was smiling shyly. <quote> 'It should help you to get a good job when you come out of the air force.' </quote>
+          </p>
+          <p>
+            <quote> 'I 'll tell you one thing,' </quote> Bill said, enjoying John 's chagrin, <quote> 'you 'll not be going back to working in Short 's.' </quote>
+          </p>
+          <p> I had been a paint-sprayer in the aircraft factory, but when war came I walked out. I just smiled at Bill and looked around the kitchen, at the china cabinet that was new, the scrubbed, bare table and the worn sofa that had been there for as long as I could remember, at the stool that Dad had made, and the four worn and scarred chairs around the table. The lino and rug were new. </p>
+          <p> Just when she 'd begun to clear the house of the war 's shabbiness and lift her heart with some new items, Mother was going to die. </p>
+          <p>
+            <quote> 'What does the doctor say?' </quote> I asked Aunt Nellie, knowing the answer already.
+                She shook her head as she spoke. <quote> 'There 's no betterment for your mother, Hugh . . .' </quote> She dropped her head and wrung her hands.' . . . <quote> No betterment at all.' </quote>
+          </p>
+          <p> I went into the parlour to unpack. There was a brand-new suite of furniture in the room, some sort of fawn tweedy material; scatter cushions lay on the two chairs and the sofa, with larger cushions. A dark carpet had been laid, and over it a light fawn long-haired rug. Beside the door was another new china cabinet. In this, and in the one in the kitchen, were Mother 's most loved possessions, two china sets, an EPNS tray, trinkets and souvenirs of bygone trips with the Mothers ' Union, the swimming medals Dad had won as a young man, some cheap glasses, a decanter that had never seen wine or spirits, framed photographs of my grandparents, on both sides. There was a new bookcase, empty of books, beside the cabinet. On the mantelpiece two wooden elephants stood sentry, beside each was a brass candlestick, and in the centre was a clock with Westminster chimes. </p>
+          <p> The parlour was looking nice. </p>
+          <p> It was a rotten time for her to die. She was only fifty-nine. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/036.00000</textSigle>
+            <title>Writers' Week Award-Winning Short Stories 1973–1994</title>
+            <domain>CreWri</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Christine Dwyer Hickey</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993 (1995)</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2F-019$A">
+          <head> BRIDIE 'S WEDDING </head>
+          <p> Bridie sits on the window sill and sips hot milk and pepper. Sheila kneels by her side. From beneath the bedclothes she peeps out at them. The streetlamp strokes orange onto their long white nighties and again across the curlers bumped tightly over their heads. Their whispers stay with them over there by the window but the odd one strays across the room and delicious it is when it 's caught. Bridie is afraid of something, something to do with Joe. But who on earth would be scared of Joe? His swinging smile and adam 's apple like a bouncing ball. And Sheila is thrilled by the same something. So what could it be? It had to do with being nude. Milly says when you get married you <hi rend="italic"> have </hi> to go nude. But Bridie would never do that. Why even in here, in front of her sisters, she would undress herself as if she was an orange in a circus. An orange that unpeels itself under a tent. Fancy being afraid of Joe. Oul Joe ... </p>
+          <p> Meat sweat sneaks up the stairs and wakes her. Oh and the smell of cooking so early makes her feel funny; half-queasy, half-hungry. She opens her eyes and the room is alive. With crisp dress cloth and perfume hissing and stockings slapping into place. And Bridie 's face like a small white turnip through the mirror and then changing slowly with each sweep of colour into a bride for Joe. </p>
+          <p>
+            <quote> 'I 'm burstin', </quote> she says to anyone who is listening and Sheila says, <quote> 'You 'll have to wait. <hi rend="italic"> If </hi> you don't mind. Mr Clifford is in there.' </quote>
+          </p>
+          <p> But she doesn't mind. She lies back nursing the urge and imagines what it will be like to sleep alone. Now that Bridie is almost gone. </p>
+          <p> Eileen says, <quote> 'Quick, he 's finished,' </quote> and they all stop to listen to the cough that he gives each time he comes out of the bathroom. </p>
+          <p> He 's left the smell of himself inside so she holds her nose and tries not to breathe. He 's left the heat of himself as well around the rim of the toilet seat. And some dead black hairs stuck in the foam of his shaving soap. She washes her face and looks into the mirror. She makes two circles from her fingers and places them over her eyes. Just to get an idea of what she 'll be like… </p>
+          <p> Back in the bedroom Kay helps her to dress. Guiding her frock down over her arms and playing the skirt until it stands stiff and wide. There are petticoats underneath that push it into shape and above a thin skin of peach organza with roses that you can see right through. Kay ties her sash and flicks out the bow, then slowly turns her towards the mirror. </p>
+          <p>
+            <quote> 'Now,' </quote> she says, <quote> 'what do you see?' </quote>
+          </p>
+          <p>
+            <quote> 'Oh Kay…it 's so lovely.' </quote>
+          </p>
+          <p> And then looking again, <quote> 'do you know? It 's the image of that frock Eileen once had. You know the one in the picture that time at the Dress Dance?' </quote>
+          </p>
+          <p>
+            <quote> 'Well, there you are,' </quote> says Kay. <quote> 'Isn't that a coincidence?' </quote>
+          </p>
+          <p> Eddie says he 'll walk back from North William St Church, because there isn't enough room in the car. But there is. Right beside her. She tries to tell him. But he doesn't seem to hear. </p>
+          <p> And even though he walks away, his hands still in his pockets and his eyes supervising his steps, she still sits the same say, her dress bunched up into a hump. So that Eddie 's space stays vacant all the way home. </p>
+          <p> Inside the house now and so many people. They all seem to know her, but she only knows some. Jack comes up the brown stairs, a tray over his head, shouting <quote> 'Load coming through' </quote> again and again. And all the old Aunts laugh and say he 's a scream. There 's sherry and port wine for each of the ladies and stout for the men and whiskey as well. And each glass grows its own deep colour from stem up to brim. Bridie 's cheeks are stained with prints of strange kisses and Joe stands by her side shaking all hands and giggling out of his freshly scrubbed face.  The tray with the meat comes up and Mr Costelloe looks down at it, grinning approval as proud as a father. And everyone says that her dress is so pretty and twirl after twirl is called for until she is dizzy. Funny though, Mr Clifford says nothing at all. </p>
+          <p> And she looks around bursting with pride at the stacks of strange crockery on the sideboard. Oh and if only Milly would believe that they own every piece of it… </p>
+          <p>And the table that Jack made is now a whole village with Bridie 's best sheets the snow on its ground. Platters of meat lie low at its centre, the square around which all else has been built. There 's mountains of bread, buttered and sliced, and big fat tomatoes heaped into hills. Skinned scallions, cleaner than she 's ever seen, sprout like trees from pint glasses. And lettuce leaves lie in hammock layers on top of four plates that stand at each corner. Small pots of thick mustard squat shoulder to shoulder. And butter tubs face them across the way. And now at last it 's time to eat, now the dishes of little beady potatoes are coming, their flaky new skin threatening to shed. </p>
+          <p> Charlie picks up one of Mrs Dolan 's knives and spanks a glass until silence falls. <quote> 'Now,' </quote> he says, his face all red. <quote> 'If you 'll all please help yourselves…' </quote>
+          </p>
+          <p> She walks across to the window and peeps through its curtain. And why is Milly so late? Beneath her is the smaller table. Glass bowls, trifle bursting out from their rims like a fat lady 's thigh bursts out from her stocking top and pudgy sponge buns lie back and wait along cake-stands out for the day from the Boston Bakery. The box of chocolates takes up most of the space. Row after row of matt brown jewels. And Mrs Dolan is beside her saying, <quote> 'Go on. Take one. Your tongue 's hanging out.' </quote>
+          </p>
+          <p> She reaches across and then remembers Kay. <quote> 'No. I 'll wait. It 's all right.' </quote>
+          </p>
+          <p> Mrs Dolan starts to insist. But then Millicent Green walks right into the room and she forgets the chocolates, every last one. </p>
+          <p>
+            <quote> 'Oh Milly. Hello. I thought you 'd never get here.' </quote>
+          </p>
+          <p>
+            <quote> 'Mother said I must wait. Seeing as I wasn't <hi rend="italic"> really </hi> invited.' </quote>
+          </p>
+          <p>
+            <quote> 'Yes, you were so.' </quote>
+          </p>
+          <p>
+            <quote> 'Well, not to the whole thing.' </quote>
+          </p>
+          <p> Milly looks cross so she says, <quote> 'Your dress is gorgeous,' </quote> and then, <quote> 'do you like mine?' </quote> positioning herself for yet another twirl.</p>
+          <p>
+            <quote> 'Not bad for a cut-off.' </quote>
+          </p>
+          <p>
+            <quote> 'What do you mean…?' </quote>
+          </p>
+          <p> 'Hmmm,' Milly says, <quote> 'my mother is a dressmaker. Don't forget.' </quote> And then walks away to peep through the adults and the table behind them. She comes back in a minute with, <quote> 'I see you have our china.' 
+            </quote>
+          </p>
+          <p>
+            <quote> 'Oh. Well, thanks for the loan.' 
+            </quote>
+          </p>
+          <p>
+            <quote> 'Oh, don't mention it. It 's not our best set.' 
+            </quote>
+          </p>
+          <p> Milly is being so mean, she might not tell her about the glasses. Just arrive in with them as though they don't matter. Creak open the box and slowly take them out. Hawing the lenses and dusting them over first before inspecting them against the light. Yes, Millie can <hi rend="italic"> just </hi> wait. </p>
+          <p> Downstairs in the kitchen Mother fits dessert dishes into each other. </p>
+          <p>
+            <quote> 'Where 's Eddie?' </quote> she asks. </p>
+          <p>
+            <quote> 'Oh he wanted to walk.' </quote>
+          </p>
+          <p> Mother looks over at the clock on the wall and frowns. </p>
+          <p>
+            <quote> 'I see Granny Green has arrived,' </quote> Eileen says, pushing past her. </p>
+          <p>
+            <quote> 'Her name is Millicent,' </quote> she answers back. </p>
+          <p> She walks out to the scullery and Sheila is whispering to Lily Fossett. </p>
+          <p>
+            <quote> 'Bridie put them under the sofa, you see. To keep them safe. And you never guess what that drunken blaggard did?' </quote>
+          </p>
+          <p>
+            <quote> 'No, what?' </quote>
+          </p>
+          <p>
+            <quote> 'Fell asleep on the sofa. And peed in his trousers. And it dribbled down through the cushions. The chocolates were destroyed.' </quote>
+          </p>
+          <p>
+            <quote> 'Oh my God. Did you throw them out?' </quote>
+          </p>
+          <p>
+            <quote> 'No. We didn't dare. After Mr Clifford buying them. Of all people …Eileen washed them. They're upstairs on the sweet table. Just make sure you don't eat any. And here. Promise you won't tell.' </quote>
+          </p>
+          <p>
+            <quote> 'Don't be so silly. As if…' </quote>
+          </p>
+          <p> She walks up the stairs and her face is on fire. How could he? The chocolates. Mr Clifford 's chocolates. Poor Mother… </p>
+          <p> Millicent is standing in the hall. <quote> 'This is so boring,' </quote> she says. <quote> 'They're all half piddley-eyed in there. I 'm sorry I came.'
+            </quote>
+          </p>
+          <p>
+            <quote> 'Why don't you go in and have a few chocolates?' </quote>
+          </p>
+          <p>
+            <quote> 'Where?' </quote> Milly brightens up. </p>
+          <p>
+            <quote> 'Are you going to give us an oul song?' </quote> Mrs Clancy asks and then turning to her husband, <quote> 'she 's a great little one on the pian-o.' </quote>
+          </p>
+          <p> But Mrs Clancy is only saying it. Just because she knows she 's heard what she 'd really been saying. About her new glasses and her a disgrace her mother being a poor 'Wida-woman' and having to take in a lodger just to make ends meet. </p>
+          <p>
+            <quote> 'I don't know…' </quote>
+          </p>
+          <p>
+            <quote> 'Ah come on. What about "All for Marie 's Wedding"? I 've heard you play that before. You do a lovely job on it altogether.' </quote>
+          </p>
+          <p> Charlie walks in then and Mrs Clancy hooks on to this elbow. </p>
+          <p>
+            <quote> "Tell her, Charlie. Tell her to play "All for Marie 's Wedding".' </quote>
+          </p>
+          <p>
+            <quote> 'Yes,' </quote> he says. <quote> 'Go on. That 's your special song.' </quote>
+          </p>
+          <p>
+            <quote> 'I 'll have to get my music…' </quote>
+          </p>
+          <p>
+            <quote> 'Go on then. We 'll wait. Promise. Where is it?' </quote>
+          </p>
+          <p>
+            <quote> 'In my schoolbag.' </quote>
+          </p>
+          <p> No colour comes through on the skylight, now that it 's dark. She knocks at the door and slowly she opens it. The shaft from the landing makes a path for her to follow. Her hand pokes under the candlewick spread, and it rubs its gentle fleece against her arm. There she feels the bag and slides it to her. </p>
+          <p> She hears a thud then and the shaft from the landing slithers off. </p>
+          <p> And everything moves so slowly, it 's almost as if it 's not moving at all, as if it 's not happening. There are hands, she knows, that lift her up from the side of the bed. And at first she <sic> think </sic>
+            <corr> thinks </corr> it 's someone looking for another twirl. But then she feels herself flop onto the mattress and bounce softly before being slipped over onto her back. </p>
+          <p> And then she sees him. So that 's who it is. There at the end of that outstretched arm. That 's his large hand pushing her small hands away. And pulling at her dress too, and tearing its roses that you can see right through. His second hand is a separate animal nibbling at the buttons in his trousers fly. His face is growing nearer and keeps saying shh, shh. Even though her screams are no more than a catch in her throat. </p>
+          <p> And then her hands go all quiet on her and lie dead by her side. And why oh why would they not move? He is taking something out of his trousers now. And one knee is up on the bed and now the other is copying it. And everything so black that she cannot see. She can hear though, the shh shh and shh shh. And downstairs too the cheering and laughter and Charlie speaking thickly the words that he 's practised all week. But her breath gets so tight that the sounds fade away. And she is going to faint…just about to go when… </p>
+          <p> Suddenly they move again, her sleeping hands. And like two little birds they curl themselves inwards and tighten for a moment before they fly upward and… </p>
+          <p> PUNCH straight up, each taking a lens of his glasses. SMASH they both to into an instant spider 's web. And he falls backwards and stumbles to the floor. </p>
+          <p> Her legs take her somehow over to the door and as it swings towards her the dressing-gown scrapes her face and brings her scream back to her. As though it had only been hiding. </p>
+          <p> There 's singing downstairs and feet bangbanging on the parlour floor. Eddie sits hunched in a corner of the hall. He looks slowly up at her but then his elbow slips and his head falls back down. </p>
+          <p> She wants to tell him. To run and shake him, to make her screams turn into words. She wants him to bash Mr Clifford before he sneaks out the back way. For already she can hear him gather his things. Eddie will get him. Eddie is the one. Sheila might kill her – the price of the glasses. And now the lodger 's money gone. What about Kay? Oh look at her dress. Her lovely organza… Oh Kay… And Mother. What would Mother say? What does she say again when she brings tales from school? <quote> 'Well you must have deserved it.' </quote> Yes that 's what she says. </p>
+          <p>
+            <quote> 'Eddie,' </quote> she shouts and her feet start to move. One step then two… But the song from the parlour makes them stop:
+                     Step we gaily on we go,
+                        Heel for heel and toe for toe.
+                        Arm in arm and row on row… </p>
+          <p> They are singing her song. Her special song. They started without her. As if she wasn't there. But it doesn't sound right. Something is wrong. </p>
+          <p> She sits down on the stairs and it comes to her then. Yes, that 's it. They have changed the words. Instead of 'All for Marie 's Wedding' they were singing 'All for Bridie 's'. </p>
+          <p> One word and now it was a different song. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/037.00000</textSigle>
+            <title>Leinster Leader</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Henry Bauress</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-019$A">
+          <head>
+            <hi rend="bold"> Fears for jobs as Intel comes under pressure </hi>
+          </head>
+          <hi rend="bold"> By HENRY BAURESS </hi>
+          <p> INTEL Ireland has come under increasing pressure this week following the decision by IBM to stop shipments of personal computers which contain the Pentium chip. However its spokesman, Frank Turpin, said the difficulty won't affect the company 's plans in the short to medium term. 
+            </p>
+          <p> The IBM decision follows the recent news that Intel and others have found a problem with the chip, but Intel said they have now dealt with it. 
+            </p>
+          <p> Intel 's Leixlip plant is responsible for around half the company 's world production of this chip and half of the 1900 Leixlip employees are involved in its production. 
+            </p>
+          <p> Intel said it discovered the problem with the chip in the summer. It has declined to recall the chips, but promised to aid those affected or replace chips where required. 
+            </p>
+          <p> It claims the problem only occurs with very advanced mathematical calculations, rather than less complex uses. The Pentium was launched in May 1993. 
+            </p>
+          <p> IBM said this week, however, that the likelihood of the problem occurring was much greater than indicated by Intel and a spokesman for IBM Ireland told the <hi rend="italic"> Leader </hi> on Tuesday that it was reacting to complaints from customers when it made its decision. It will resume shipments when it gets a better description of the problem, said Rory Caren, an IBM Ireland spokesman. 
+            </p>
+          <p> IBM said Intel 's description of the flaw was technically accurate but there were many customer situations in which the risk of error may be significantly higher. 
+            </p>
+          <p> IBM is just one of a number of PC producers which produces Pentium based PC 's. Compaq, Hewlett Packard, Dell, Gateway and Packard Bell have not yet followed IBM 's move. 
+            </p>
+          <p> Intel have described IBM 's decision as <quote> "unwarranted." </quote>
+            <quote> "Based upon the work of our scientists analysing real world applications and the experience of millions of users of Pentium processor based systems, we have no evidence of increased probability of encountering the flaw," </quote> Andrew Grove, Intel President and CEO, said on Monday. 
+            </p>
+          <p> He repeated Intel will replace any chips for any customer who might encounter the problem. Frank Turpin, Intel Ireland manager for external affairs, said on Tuesday that Intel hoped to take on another 300 people in the OEM systems plant over the next three months and the problem with the chip has been rectified. Dell has supported Intel 's stance, he said. 
+            </p>
+          <p> This week, the company expects a decision from Kildare County Council on its planning application for an extension to the Leixlip plant. 
+            </p>
+          <p> It is still hoped that an assembly and test centre will be built in Leixlip but plans for that third phase of the Leixlip development are on hold. 
+            </p>
+          <p> The background to the Pentium debate is the fact that there is currently a major price cutting war in the very competitive arena of PC 's and their chips. 
+            </p>
+          <p> At home, the news of the Pentium problem has led to unease. Many of the Intel employees come from various parts of Co. Kildare and the company has proved a huge boost to Leixlip. Mike Parle, Leixlip Chamber of Commerce PRO, said the chamber has prepared a <quote> "doomsday" </quote> plan should anything happen Intel, pointing to the exit of Digital. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/037.00001</textSigle>
+            <title>Leinster Leader</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Henry Bauress</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-019$A">
+          <head>
+            <hi rend="bold"> Pioneers celebrate 70 years in Leixlip </hi>
+          </head>
+          <hi rend="bold"> By HENRY BAURESS </hi>
+          <p> Alcohol is a gift of God but its abuse is the problem. That was one the themes in a talk to Leixlip Pioneers by Fr. Bernard McGuckian, National President of Pioneer Total Abstinence Association. 
+            </p>
+          <p> He was speaking at the mass to celebrate the 70th anniversary of the founding of the pioneer association in Leixlip in 1924. 
+            </p>
+          <p> Referring to the Roaring Twenties in the United States, Fr. McGuckian said prohibition was a foolish attempt to deal with the problem of alcohol. The early pioneers were not puritanical, prohibitionistic or judgemental of others, but their actions were a response to the love of Christ and sacrifice. <quote> "They decided to light one little candle rather than curse the dark," </quote> he added. 
+            </p>
+          <p> Fr. McGuckian said that the Leixlip group may have been set up in the immediate aftermath of the Silver Jubilee celebrations of the founding of the national movement in 1898. It was held at the Royal Dublin Society in June 1924, some months before the start up in Leixlip on 28 November that year. 
+            </p>
+          <p> The movement had started with Fr. Cullen and four women, said Fr. McGuckian. <quote> "The first four were women, as Fr. Cullen wanted only women in the movement initially, because he believed men had not suffered enough. But later a group of men pointed out they could be just as worthy of membership," </quote> he said. 
+            </p>
+          <p> By 1918, there were 200,000 in the movement and when the Leixlip group was formed a further 50,000 joined. 
+            </p>
+          <p> Drunkeness is a sin said Fr. McGuckian, but drink is not a demon, it is a gift of God. He said preaching, cajoling, police, prisons or psychiatrists could not prevent the abuse of it. <quote> "Only God 's grace can move a free human will." </quote>
+          </p>
+          <p> Fr. Cullen, who founded the <hi rend="italic"> Sacred Heart Messenger </hi> used a term: <quote> "the gentle violence of total abstinence." </quote>
+          </p>
+          <p> A Pioneer promises to pray every day of their lives for a person with a problem, and the movement is about love and concern for others. Wearing the association 's emblem, he said, is a public profession of faith that any human situation can be changed, not a boast about being a non drinker. Fr. Cullen wanted the Pioneers to preach the news that things can change. 
+            </p>
+          <p> Fr. McGuckian told the congregation that he met a woman who lived in the Falls Road, amidst all the troubles 1980 's in Belfast. She said that since she had taken the pledge there was a peace inside her home which no trouble could take away. 
+            </p>
+          <p> The worst thing about alcohol abuse is not the man it makes drunk but the children it makes afraid. They never get over it, he continued. A six year old girl in Newry told her teacher she wanted to join the Pioneers. When asked why, she replied it was because of what daddy did to mammy. 
+            </p>
+          <p> The movement was a quintessential Dublin movement, said Fr. McGuckian and Dublin people should be proud of it. 
+            </p>
+          <p> In Africa now, there are 250,000 Pioneers. They are joining in huge numbers there as they did in Ireland sixty years ago, mainly out of love for Christ. 
+            </p>
+          <p>
+            <quote> "We would like to have one Pioneer in every home at least. At least one praying that those who take <sic> who take </sic> a drink moderately will remain moderate." </quote>
+          </p>
+          <p> Fr. McGuckian said we must set out with great hope. <quote> "It is a movement primarily of love and compassion, not of indignation and irritation at human folly and stupidity." </quote>
+          </p>
+          <p> Debauchery and drunkenness leads to a coarsening of the heart, he told the attendance, but he reminded them of Matt Talbot 's words that the Lord did not ask us to be successful but to be faithful. 
+            </p>
+          <p> Matt Talbot, he said had to give up drink to stay alive but that act led to a lot more. <quote> "When I met the Pope a few years ago, he said to me: <quote>
+                <sic> 'You 're </sic>
+                <corr> Your </corr> patron is Matt' </quote> ." </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/037.00002</textSigle>
+            <title>Leinster Leader</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Henry Bauress</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-019$B">
+          <head> Catalogue of crime in Athy </head>
+          <hi rend="bold"> by JOAN WALSH </hi>
+          <p> ATHY was the scene of a catalogue of crime over the weekend as vandals wrought havoc throughout the town. Gardai believe a local gang on the rampage is responsible for the spate of crime. 
+            </p>
+          <p> On Friday night, the Community Services Centre, Stanhope Place was completely wrecked after vandals ransacked the building causing extensive damage. They hacked their way through doors and rifled every office in the building, even leaving excrement in places. Every light switch was smashed and phone lines ripped out of the wall. A small amount of cash was taken. 
+            </p>
+          <p> The centre was closed all weekend and part of this week for repair works. Mr. David O'Flaherty, Director of Community Services said he was greatly encouraged by the number of people who offered their help. 
+            </p>
+          <p> Meanwhile on Sunday night thieves broke into St. Michael 's Church but didn't manage to take anything. The same night, there was a break-in at Pearsons Garage, Woodstock Street but nothing was taken. Gardai believe all three incidents are linked and investigations are continuing. 
+            </p>
+          <p> Meanwhile an Athy supermarket owner and his wife were the victims of a terrifying ordeal on Saturday night. The nightmare unfolded at around 10.40 p.m. as Desmond and Sadie Perry were at home watching television. There was a loud bang at the front door and the couple were confronted by three masked men, one armed with a sawn off shotgun and another with a knife. 
+            </p>
+          <p> The raiders forced their way into the house and tied up the terrified couple. They took a substantial sum of money, mainly cheques and escaped in the Perry 's Ford Granada car. As the gang fled they pulled the telephone wires from the wall. Soon after, the couple managed to free themselves and raised the alarm. The car was recovered by local Gardai shortly after the incident at Tyrellstown. 
+            </p>
+          <p> Meanwhile, also on Saturday there was an attempted raid at Valu Centre, Athy. The raiders fled as the alarm went off. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/037.00003</textSigle>
+            <title>Leinster Leader</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Henry Bauress</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-019$C">
+          <head>
+            <hi rend="bold"> New office cost almost a million </hi>
+          </head>
+          <hi rend="bold"> by LIAM KENNY </hi>
+          <p> THE accumulated cost of the finished Naas Credit Union premises at No. 20 North Main Street has approached the one million pound mark. In a detailed breakdown to members at the AGM on Saturday night last the Credit Union directors calculated a total cost of <amp> pound sign </amp> 945,000 for the premises. 
+            </p>
+          <p> More than <amp> pound sign </amp> 200,000 was swallowed up by work on two ill-fated designs which envisaged the total demolition of the old Marum 's premises and rebuilding of new structures. The first envisaged total demolition and the building of an architecturally imaginative new office building. This was dropped when it was realised that it was not acceptable to the Naas planning authorities. The second involved demolition and rebuilding to a more traditional design. 
+            </p>
+          <p> Eventually this too had to be abandoned over engineering issues involving other properties but not before the Credit Union had spent <amp> pound sign </amp> 113,478 on architect 's and engineer 's fees and another <amp> pound sign </amp> 30,000 on a contract settlement to the builder in addition to other costs. 
+            </p>
+          <p> A third course of rebuilding <hi rend="italic"> within </hi> the framework of the existing Marum 's premises had to be adopted in early 1993 which resulted in the present offices in August and cost <amp> pound sign </amp> 503,973 plus <amp> pound sign </amp> 75,182 for fixtures and fittings. 
+            </p>
+          <p> The cost of the Marum 's site purchased in October 1988 was <amp> pound sign </amp> 188,427 of which <amp> pound sign </amp> 26,550 was recovered through the sale of the publican 's licence leaving an actual site cost of <amp> pound sign </amp> 161,877. A further <amp> pound sign </amp> 77,000 will be clawed back by the Credit Union through the sale of its old offices at No.32 North Main Street, leaving the net cost of the Credit Union 's property transactions over the past six years in the region of <amp> pound sign </amp> 870,000. 
+            </p>
+          <p> Fortunately the Naas Credit Union 's financial performance is so strong – a reflection in turn of the popularity of its services – that it has been able to absorb such exceptional costs while at the same time granting dividends of up to five percent to members and transferring significant amounts to its reserve accounts. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/037.00004</textSigle>
+            <title>Leinster Leader</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Henry Bauress</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-019$D">
+          <head>
+            <hi rend="bold"> Denied damage to Allen tower </hi>
+          </head>
+          <hi rend="bold"> by PAUL O'MEARA </hi>
+          <p> CLAIMS that the stone tower at the top of the Hill of Allen may be under threat because of the excavations which take place beneath the structure have been denied by Roadstone. 
+            </p>
+          <p> Some local people fear that further action is necessary to preserve the building but according to Roadstone no quarrying has been taking place near the tower and a spokesperson dismissed a claim that fresh cracks have appeared. 
+            </p>
+          <p> Roadstone has been extracting rock from the Hill of Allen for a good many years but the company says it is committed to preserving the tower. 
+            </p>
+          <p>
+            <quote> "It is our policy not to go near the tower. The company has done a good deal of restoration work there and this includes work to repair damage caused as a result of vandalism," </quote> the spokesman said. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/037.00005</textSigle>
+            <title>Leinster Leader</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Henry Bauress</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-019$E">
+          <head>
+            <hi rend="bold"> Newbridge scheme looks good </hi>
+          </head>
+            By EAMON DILLON
+            <p> MAJOR developers are closely examining the Action Plan for Newbridge 's designated area. Urban Renewal Liaison Officer and Town Clerk Charlie Talbot said that he has had a large number of enquiries. Two of those include proposals for major property developments. In relation to one of them, a request for planning permission has already been lodged.
+            </p>
+          <p>
+            <quote> "There 's no doubt about it, there 's money looking to be spent in Newbridge," he said. He explained that people making contact include those with property already in the area and those seeking to acquire property. He hoped it would be possible to </quote> "marry" the two.
+            </p>
+          <p> Mr. Talbot added that there is a large demand for both public and private housing in the Newbridge area while it is the biggest shopping town in the county. <quote> "I can't think of a town that has more going for it,"</quote> he concluded.
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/038.00000</textSigle>
+            <title>Munster Express</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-017$A">
+          <head>
+            <hi rend="bold"> MUCH RESENTMENT TO DRINK DRIVING LAWS </hi>
+          </head>
+          <p>
+            <hi rend="bold"> The new drink driving laws have been received with anger and resentment by most members of the public and licensed vintners to such an extent that, if there was an election in the near future, the matter would almost certainly be a major issue. 
+                
+           </hi>
+          </p>
+          <p> Every person the "Munster Express" spoke to on the subject this week was at pains to suggest that they did not condone drunk driving in any way. But they felt the new laws were unsocial and draconian and an attack on ordinary law abiding citizens at a time when muggers, vandals and burglars were terrorising the community. 
+            </p>
+          <p> It also emerged that there was no animosity towards rank and file members of the Garda Siochana who are seen as people merely doing their job. But there was much bitterness against the politicians who introduced the legislation and the fact that so many officers have been diverted to check-point duties. 
+            </p>
+          <p> In a separate development, which could have a bearing on the controversy, the Garda Representative Association expressed <quote> "serious concern" </quote> this week at the decision of the Commissioner to introduce a new staff appraisal system for gardai. 
+            </p>
+          <p>
+            <quote> "What will happen is that individual gardai may well be tempted to opt for the soft target, like motorists, rather than concentrating on longer term crime detection", </quote> said the Association 's Waterford based deputy general secretary, Mr. P.J.Stone. 
+            </p>
+          <p> The mood of the people was also evident on RTE 's "Questions and Answers" on Monday night when, in a show of hands, the vast majority of the audience showed their opposition to the new laws. A return to the status quo and a scale of fines and punishments, depending on the concentration of alcohol involved, were the options most favoured. 
+            </p>
+          <p> A suggestion by Ms. Avril Doyle, T.D., of Fine Gael that Ireland adopt the French system of dealing with drunk drivers has also been finding much support in recent days. In France, the punishment matches the concentration and the consequences of a ban on the defendant 's spouse and children is also taken into consideration. 
+            </p>
+          <head>
+            <hi rend="bold"> DROP IN BUSINESS </hi>
+          </head>
+          <p> The new laws have very definitely taken their toll on the business of some pubs, especially in rural areas where there is no public transport or taxi service. A sales representative with a major drinks supplier told the "Munster Express" orders were down this week in some areas. He cited one small rural pub which had two customers on Saturday night compared to the usual forty. 
+            </p>
+          <head>
+            <hi rend="bold"> PUBLICANS SPEAK THEIR MINDS </hi>
+          </head>
+          <p> The following are the views of just some publicans we spoke to during the week. All stressed that they did not condone drunk driving and their customers were abiding by the new laws. 
+            </p>
+          <head>
+            <hi rend="bold"> Michael O'Gorman, The Rhu Glenn </hi>
+          </head>
+          <p>
+            <quote> "All our customers are very upset. Usually one would find that a person taking two drinks would be the driver of a party of three or four but now that is all stopped. We have supplied a mini bus and are driving people home to Waterford, New Ross and areas in between. There seems to be a lot of resentment among the public at the new situation". </quote>
+          </p>
+          <head>
+            <hi rend="bold"> Robbie Walsh, Fox 's Den </hi>
+          </head>
+          <p>
+            <quote> "Many of our customers are men who would drink two or three pints and then drive home along the back roads. These people are steady as rocks and no danger to anybody but now they are so scared they don't even want to take one drink. They come in and have a mineral but are miserable with it." </quote>
+          </p>
+          <p>
+            <quote> "The social fabric of society is being destroyed and, when the summer comes, it will <sic> serious </sic>
+              <corr> seriously </corr> affect tourism because the Irish pub will soon be a thing of the past". </quote>
+          </p>
+          <p>
+            <quote> "People are angry and feel the efforts of the gardai are being deployed in the wrong direction. I hope the resentment does not materialise against individual gardai as that would be a shame. But there is a real danger that many decent people will begin to view the gardai as the enemy instead of a friend as it should be." </quote>
+          </p>
+          <p> Mr Walsh has introduced a pub based hackney service and hopes that will assist his customers in their dilemma. 
+            </p>
+          <head>
+            <hi rend="bold"> Jim Harney, Dunhill </hi>
+          </head>
+          <p>
+            <quote> "Most of my customers have described the situation as a downright disgrace. They are very moderate drinkers who enjoy a social night out which is now being made very difficult for them to continue with." </quote>
+          </p>
+          <p>
+            <quote> "There is almost the same punishment for a man with just half a pint over the limit as there is for a real drunk driver. People are even afraid to drink at home because they have to be on the road the next morning". </quote>
+          </p>
+          <p>
+            <quote> "I am running this pub since 1947 and we never had an accident involving people leaving this premises. Last night, one of my customers went home three miles down a dark road on a bicycle. He was in more danger from a fast, sober driver than from a moderate drinker who drives carefully". </quote>
+          </p>
+          <head>
+            <hi rend="bold"> Seamus and Renee Comerford, Mooncoin. </hi>
+          </head>
+          <p>
+            <quote> "Last weekend was very busy but there were only three cars in the car park and two were owned by staff. We have been driving customers home ourselves while others are using a taxi. Many couples are taking it in turns to stay on the dry". </quote>
+          </p>
+          <p>
+            <quote> "In general, the reaction of customers to the new laws has been very negative as most feel the situation is unfair. There is a drop off in custom from people who were in the habit of dropping in for a drink or two before going home from work in the evenings". </quote>
+          </p>
+          <p>
+            <quote> "Decent people will always comply with the law but many people are telling us they feel hard done by by the new regulations". </quote>
+          </p>
+          <head>
+            <hi rend="bold"> Michael Baroon, Glenmore </hi>
+          </head>
+          <p>
+            <quote> "The situation should have been left as it was as there was no trouble being caused by decent, respectable people driving home after a social night out with just a couple of drinks taken." </quote>
+          </p>
+          <p>
+            <quote> "We have many people who drop in late at night and rarely have more than two drinks. This pub is a meeting place and they come for the chat more than anything else and now they are frightened even to do that." </quote>
+          </p>
+          <p>
+            <quote> "We have organised a taxi to be in the area and we will accommodate customers ourselves if possible but there is a great opposition among the people to the new laws". </quote>
+          </p>
+          <head>
+            <hi rend="bold"> Paul Cusack, Power 's Seaview Hotel. </hi>
+          </head>
+          <p>
+            <quote> "Because Tramore is an urban area we have a lot of customers who do not need to drive. But all of Tramore is going to suffer once the summer comes because the Sunday afternoon driver who likes to come out for a walk on the beach and have a drink or two before going home will be a thing of the past." </quote>
+          </p>
+          <p>
+            <quote> "Most of our customers think the new situation unfair, especially in the blanket way the ban is applied. They feel there should be a difference between the person socially sober but barely over. They are very different to a person with a lot of drink on board as nobody could condone such behaviour". </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/038.00001</textSigle>
+            <title>Munster Express</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-017$B">
+          <head>
+            <hi rend="bold"> HISTORIC BUILDING VANDALISED </hi>
+          </head>
+          <p>
+            <hi rend="bold"> The former Walsh Asylum, now renamed Walsh House, dates back to the 1860 's and only the quick thinking of a responsible citizen saved all its records and ledgers from almost certainly being destroyed. </hi>
+          </p>
+          <p> Doors, windows and other fittings were smashed and, in the oratory, a Communion table was hacked to pieces and religious vestments trampled underfoot. To the great relief of the trustees who administer the business of the charity, a beautiful stained glass window in the oratory escaped the attention of the vandals. 
+            </p>
+          <head>
+            <hi rend="bold"> PRESERVED </hi>
+          </head>
+          <p> The building is preserved under the Corporation 's city plan but some time ago it became clear that the years had taken their toll and part of the complex, which comprises five terraced houses, was condemned. The trustees then embarked on a major scheme which would protect the building and provide eighteen modern apartments for elderly people. 
+            </p>
+          <p> The architect for the project is Mr. Ronnie Falconer of C.J. Falconer and Associates and he told the "Munster Express" he was appalled at the damage cause by the intruders. He said it had taken some time for the trustees to bring the plan to fruition but the Department of the Environment had now approved grant aid and a contract had been agreed with a builder. 
+            </p>
+          <p> The concerned citizen who discovered the damage told our reporter he was absolutely shocked at what he saw. 
+            </p>
+          <head>
+            <hi rend="bold"> A Shambles </hi>
+          </head>
+          <p>
+            <quote> "I was passing the building and noticed that the side door was open so I went in to investigate", </quote> he said. Continuing, he declared: <quote> "What I saw was unbelievable as the whole inside of the building was a shambles. It was utter destruction". </quote>
+          </p>
+          <p>
+            <quote> "The place was also full of cider bottles and human excrement and, when I went upstairs to the oratory, I found the communion table hacked to pieces and priests ' vestments trampled underfoot near more human excrement". </quote>
+          </p>
+          <p>
+            <quote> "In another room I found books, papers and ledgers scattered around the floor and I discovered that they were the actual records of the institution. I collected them all and brought them down to Waterford Corporation where officials took them into safe keeping for the owners", </quote> said the man. 
+            </p>
+          <p> The building has, once again, been secured and Gardai are investigating the matter. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/038.00002</textSigle>
+            <title>Munster Express</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-017$C">
+          <head>
+            <hi rend="bold"> ALARMING CHILD SEX ABUSE FIGURES </hi>
+          </head>
+          <p>
+            <hi rend="bold"> The Community Child Centre at Waterford Regional Hospital dealt last year with 70 confirmed victims of child sex abuse and another 35 unconfirmed high risk cases. </hi>
+          </p>
+          <p> The Centre, which serves the south east region with its 129,000 children, had 176 referrals <quote> "for further treatment and investigation" </quote> and in 40 p.c. of cases abuse was confirmed. 
+            </p>
+          <p> The unconfirmed high risk cases (20 p.c.) were children who were thought likely to have been victims but where the child 's story was perhaps inconsistent or unclear in some respects. 
+            </p>
+          <p> A further 20 p.c. were classified as <quote> "unconfirmed low risk" </quote> – they did not make a definite disclosure of abuse. 
+            </p>
+          <p> The remaining 20 p.c. failed to complete their assessment at the Child Centre and they, according to Clinical Psychologist Dr. Mairi Keenleyside, who provided the statistics, may be particularly vulnerable. 
+            </p>
+          <p>
+            <quote> "It may be that the families who fail to complete assessment have more problems but end up receiving less services", </quote> stated Dr. Keenleyside, who is with Waterford Community Care. 
+            </p>
+          <p>
+            <quote> "Dysfunctional families may find the assessment procedures particularly stressful and may end up receiving less services because they have opted out of the prescribed assessment procedure". </quote>
+          </p>
+          <p> When a child is being assessed at the Child Centre the gardai are involved and that may lead to legal procedures against the abuser. Children may be required to give evidence in court against an alleged perpetrator and many studies have shown that waiting for and taking part in court procedures is very stressful. That could lead to an exacerbation of emotional and behavioural problems, Dr. Keenleyside points out. 
+            </p>
+          <head>
+            <hi rend="bold"> KILKENNY CASE </hi>
+          </head>
+          <p> She said that in the U.S., other legal system designed to reduce child distress and to get the alleged abuser to comply with treatment, had been examined. It was suggested as a consequence that at least for intrafamilial first time offenders, a system whereby the alleged abuser was offered treatment prior to legal intervention was the most promising way forward. 
+            </p>
+          <p> She said that data published in the Kilkenny incest case report and taken from a study in the Eastern Health Board area in 1988 showed that of 990 cases of child sexual abuse reported to the board, 507 were referred by the gardai to the Director of Public Prosecutions. That resulted in 38 cases where the defendant was found guilty. 
+            </p>
+          <p> In other words, there were convictions only in respect of 4 p.c. of the original allegations. 
+            </p>
+          <head>
+            <hi rend="bold"> TRAINING NEEDS </hi>
+          </head>
+          <p> In highlighting some of the problems with the present system for processing cases of child sex abuse, Dr. Keenleyside said the training needs of professionals in contact with children required to be carefully addressed. 
+            </p>
+          <p> In particular, professionals needed to be more informed about abusers and to be aware of the protocol within their own agency for dealing with child sex abuse cases. They also needed further training in the practicabilities of dealing with children who made disclosures of abuse. 
+            </p>
+          <head>
+            <hi rend="bold"> FEAR </hi>
+          </head>
+          <p> She said also that more consideration should be given to children and families who made an initial disclosure but who then opted out of the prescribed system, perhaps through fear of legal implications for the alleged abuser. 
+            </p>
+          <p> She concluded that while obviously further development of services for victims of abuse was essential, treatment services for abusers should also be highlighted. Given the low rate of abusers who received treatment or who were prosecuted, there was perhaps a need to review the legal procedure for dealing with those cases. 
+            </p>
+          <p> (People concerned about abuse are advised by Dr. Keenleyside to contact their G.P., or their social services at Tel 015 – 76111). 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/040.00000</textSigle>
+            <title>The Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Jane Suiter</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1998</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-011$A">
+          <head>
+            <hi rend="bold"> Financial regulator proposal for Cabinet tomorrow </hi>
+          </head>
+          <head>
+            <hi rend="underline"> New body planned to operate separately from Central Bank </hi>
+          </head>
+          <head>
+            <hi>By Jane Suiter,
+                    Economics Correspondent </hi>
+          </head>
+          <p> THE Cabinet is to be asked tomorrow to establish a new independent regulator to police the financial services sector. The plan is part of a response to the controversy in the financial sector, most recently at Allied Irish Banks. 
+                </p>
+          <p> The Té/anaiste, Ms Harney, and the Minister for Finance, Mr. McCreevy, are jointly tabling the proposals. They agree that a new regulatory body should be established, separate from the Central Bank, to supervise the banks and other financial institutions. 
+                </p>
+          <p> Although on the drawing board for some months, the process is being speeded up as a direct response to the latest financial controversy which has erupted over AIB and the inquiry into its handling of DIRT tax liabilities. 
+                </p>
+          <p> Senior ministers have expressed concern that the current regulatory structure is not equipped to deal with such situations. It is understood that Ms Harney and Mr McCreevy want to move swiftly to offset criticism of the Central Bank. 
+                </p>
+          <p> The Central Bank has said that its primary role is to oversee the overall health of the financial system. It is expected that the new body will be asked to focus much more directly on consumer protection and on the proper running of the financial institutions. 
+                </p>
+          <p> The presentation of the joint proposal means that Cabinet approval for the new regulator is practically guaranteed. 
+                </p>
+          <p> It is the result of the conclusions of a joint working group between the Department of Enterprise and Employment and the Department of Finance, which was set up earlier this year. But it will be next year before the new authority is set up. 
+                </p>
+          <p> If approved by Cabinet, it will be a severe setback for the Central Bank. The bank is already to lose its monetary policy decision-making functions as part of the move to the single currency and the supervisory side of its role has been the fastest growing part of its brief for some time. 
+                </p>
+          <p> When he appeared before the Dé/ail Committee of Public Accounts last week, the bank 's governor, Mr Maurice O'Connell, said the bank could see the logic of bringing the regulation of the insurance sector into the same organisation as the banks. 
+                </p>
+          <p> However he insisted that there was no point in bringing taxation supervision into the same body, saying such a move had not worked anywhere in the world. 
+                </p>
+          <p> Mr O'Connell also admitted it was necessary for consumer protection to take on a more clearly defined and transparent role. He said the bank would be prepared to take on such a role if legislation was changed. 
+                </p>
+          <p> Speaking on RTv/E Radio 's <hi rend="italic"> This Week </hi> programme yesterday, Mr McCreevy said the bank was not at fault in the AIB affair and insisted it had done an excellent job within its remit of prudential regulation.
+                </p>
+          <p> The bank has been in charge of banking supervision since 1971, but in recent years significant extra responsibility has come its way through the regulation of the IFSC, the Stock Exchange as well as investment intermediaries. 
+                </p>
+          <p> Meanwhile the Dé/ail Committee of Public Accounts continues its investigation of the AIB affair this week and is to have a conference of its legal advisers along with those of the Comptroller and Auditor General, Mr John Purcell, today, to consider its next steps. 
+                </p>
+          <p> AIB 's former group internal auditor, Mr Anthony Spollen, is among the witnesses who have been invited to appear before the committee and is likely to appear shortly. He will defend his estimate that the bank 's outstanding DIRT tax liability was around <amp> pound sign </amp> 100 million. Mr Spollen may also tell the committee about criticisms of the bank 's handling of the non-resident account issue and other issues, contained in a lengthy memo which he submitted to the bank 's audit committee in 1991. 
+                </p>
+          <p> Another former senior executive, Mr Jimmy O'Mahony, group head of taxation, was quoted by AIB executives as saying that the <amp> pound sign </amp> 100 million estimates – derived from figures which he originated – were off-the-cuff figures designed to get the attention of other managers. He has also been invited to appear before the committee. 
+                </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/040.00001</textSigle>
+            <title>The Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Jane Suiter</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1998</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-011$B">
+          <head>
+            <hi rend="bold"> Spanish judges prepare to fly to London to question Pinochet </hi>
+          </head>
+          <hi rend="bold"> From Rachel Donnelly, in London </hi>
+          <p> THE former Chilean dictator, Gen Augusto Pinochet, remains under armed guard at a London hospital today awaiting the arrival of two Spanish judges who will question him about alleged genocide and state-sponsored terrorism during his 17-years in power.
+            </p>
+          <p> Gen Pinochet (82) was arrested on Friday night by the Metropolitan Police on an international warrant, following a request by Judge Baltasar Garzé/on and Judge Manuel Garcé/ia Castellé/on. They are investigating the murder of up to 3,000 people and the disappearance of 1,000 more in Chile between 1973 and 1983. The arrest warrant alleges that between September 1973 and December 1983 he <quote> "did murder Spanish citizens in Chile within the jurisdiction of the government of Spain".</quote>
+          </p>
+          <p> The Chilean government accused Britain of wrongfully arresting their former leader because, as a senator, Gen Pinochet was travelling on a diplomatic passport and could claim diplomatic immunity. The Foreign Office rejected this yesterday. 
+            </p>
+          <p> The Chilean president, Mr Eduardo Frei, a Christian Democrat, said yesterday that Spanish courts had no more right to try Gen Pinochet than Chilean judges would have to delve into crimes under the former Spanish dictator, Gen Franco. His foreign minister, Mr José/e Miguel Insulza, a Socialist, lodged a formal complaint with his British counterpart.
+            </p>
+          <p> But other leading members of both coalition parties in Chile said that diplomatic immunity did not protect Gen Pinochet from being questioned about crimes against humanity.
+            </p>
+          <p> The Shadow Foreign Secretary, Mr Michael Howard, said he was worried that Gen Pinochet 's arrest was not a result of normal legal procedures but had come about because of pressure from lobby groups and Labour MPs. During the previous Conservative government, Gen Pinochet was a regular visitor to Britain.
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/040.00002</textSigle>
+            <title>The Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Jane Suiter</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1998</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-011$C">
+          <div id="W2C-011$D">
+            <head>
+              <hi rend="bold"> Dublin street clashes between gardai and supporters of SF
+                    By Jim Cusack and Maol Muire Tynan </hi>
+            </head>
+            <p> BANDSMEN taking part in a Sinn Fé/ein demonstration marched through the centre of Dublin yesterday chanting <quote> "I..I..IRA".</quote>
+            </p>
+            <p> There were ugly confrontations in the city centre between gardaé/i and Sinn Fé/ein supporters on a number of occasions over the weekend following Sinn Fé/ein Youth 's national congress in Dublin on Saturday.
+                </p>
+            <p> Gardaé/i were called to Middle Abbey Street on Saturday afternoon after a large group of young men leaving the congress gathered around an unmarked Garda car and began rocking it and kicking it, gardav/i said. It is believed the car contained two Special Branch officers who had been monitoring the event. 
+                </p>
+            <p> Uniformed gardaé/i from Store Street station came to the assistance of the two plain-clothes officers and dispersed the crowd without any arrests.
+                </p>
+            <p> According to the Garda, some people attending the congress were involved in incidents later.
+                </p>
+            <p> It is understood a disturbance broke out after two uniformed gardaé/i attempting to arrest a man who was urinating in a shop doorway on O'Connell Street at around midnight, were surrounded by a crowd.
+                </p>
+            <p> More gardaé/i were called from Store Street station to assist the officers in O'Connell Street. Nine men, including two from Northern Ireland, were arrested and brought to the station, where they were charged with public order offences and released without surety.
+                </p>
+            <p> It is expected all will receive summonses for the offences and will appear before the District Court.
+                </p>
+            <p> After yesterday 's march through the city centre, a large group protested outside Store Street station about the arrest of the nine men. Scuffles broke out between gardaé/i and members of Sinn Fv/ein Youth but no further arrests were made.
+                </p>
+            <p> The protestors claimed that gardaé/i had harrassed Sinn Fé/ein Youth members after their congress on Saturday. Chanting loudly, they sat on the steps of the Garda station and scuffles followed as gardaé/i set about removing them.
+                </p>
+            <p> The disturbances, however, lasted just minutes as Garda reinforcements moved in and Sinn Fé/ein officials appealed for calm and urged the crowd to disperse peacefully.
+                </p>
+            <p> About 500 people marched in yesterday 's demonstration from Parnell Square to Kildare Street, and back. Five flute and drum bands from Northern Ireland, three dressed in combat uniforms and black berets, took part in the demonstration and played republican party tunes.
+                </p>
+            <p> It was led by a group of recently-released IRA prisoners.
+                </p>
+            <p> The bands were among a large contingent who travelled to Dublin yesterday morning on a chartered train from Belfast.
+                </p>
+            <p> The demonstration was also attended by Sinn Fv/ein figures and a delegation from the political wing of the Basque separatist organisation ETA.
+                </p>
           </div>
         </div>
       </text>
@@ -518,50 +4378,8709 @@
       <teiHeader>
         <fileDesc>
           <titleStmt>
-            <textSigle>NO/001.00003</textSigle>
-            <title>sophieelise.blogg.no</title>
-            <domain>blog</domain>
+            <textSigle>EN/040.00003</textSigle>
+            <title>The Irish Times</title>
+            <domain>PreNew</domain>
           </titleStmt>
           <sourceDesc>
             <analytic>
-              <h.author>Isaksen, Sofie Steen</h.author>
+              <h.author>Jane Suiter</h.author>
             </analytic>
             <imprint>
-              <pubDate type="year">2017</pubDate>
+              <pubDate type="year">1998</pubDate>
               <pubDate type="month" />
               <pubDate type="day" />
               <pubPlace>
-                <idno type="URI">https://reisekick.no/</idno>
+                <idno type="URI"> </idno>
               </pubPlace>
             </imprint>
           </sourceDesc>
         </fileDesc>
       </teiHeader>
       <text>
-        <div>
-          <head>endelig får dere vite alt!</head>
-          <p>Søndag! Koseklærne er på, og denne fra Hollister er min favoritt. Fakta: jeg har den alltid 
-                    liggende ved siden av senga, slik at den er lett tilgjengelig både morgen og kveld når jeg ikke 
-                    skal møte noen å være ufresh i mitt eget selskap. Jeg planlegger nemlig det: å være ufresh, men 
-                    kanskje jeg ringer over en venninne som kan overnatte slik at jeg får lettet på trykket i hodet. 
-                    Det hadde vært koselig å skravle til jeg sovner, for jeg har så mye på hjertet, og så mye jeg trenger 
-                    å få snakket om. Jeg har nesten for mye som skjer i livet mitt om dagen.. Alt jeg har jobbet for i hele 
-                    år skal liksom eskalere nå i august, og dere får endelig ta del i noe av det. Jeg er dritnervøs og samtidig 
-                    glad, og ydmyk for den fantastiske muligheten jeg har blitt gitt. Det siste halve året har jeg jobbet 
-                    beinhardt og det har vært vanskelig ettersom jeg ikke kan fortelle dere hva noe dreier seg om, og 
-                    samtidig har jeg heller ikke hatt noe særlig til hverdag. Jeg har bare jobbet, reist på jobbreiser, 
-                    kommet hjem, vært sliten, lei, ikke sett lyset i enden av tunellen.. Dere skjønner tegninga. Litt som 
-                    en evig eksamensperiode hvor sosialt liv og eget utseende kollapser, men det blir verdt det til slutt. 
-                    OMG PÅ FREDAG SKJER DET!</p>
-          <p>Ellers dro jeg faktisk til Tromsø i går kveld, og nå er jeg hjemme i Oslo. Hele reisen skjedde 
-                    spontant og før jeg visste ordet av det satt jeg på flyet – som en psykopat, for han jeg skulle besøke 
-                    ante ikke at jeg kom. Jeg hadde blitt invitert men hadde bare svart "nei jeg er veldig opptatt", når jeg 
-                    egentlig kunne – jeg elsker jo å overrasske folk! Jeg var faktisk ganske nervøs først for man aner jo ikke 
-                    hvordan et uanmeldt besøk vil bli mottatt, men det endte opp med å bli en av de hyggeligste kveldene jeg har 
-                    hatt i 2017. Det er så digg å like noen så godt som liker meg tilbake! Haha, ok der hørtes jeg ut som verdens 
-                    største nørd, men.. det er bare så ukomplisert og bra. Uansett, nå er jeg hjemme og uten noen bilder fra 
-                    kvelden, men jeg har bildene i hodet og det er nok enn så lenge.</p>
-          <p>Her sitter jeg akkurat nå, glad og sliten! Og ja, jeg har meg selv som bakgrunn på pcen hehe. Why not.</p>
+        <div id="W2C-011$E">
+          <head>
+            <hi rend="bold"> Dempsey presses for Budget to include a range of <quote> 'green taxation'</quote> measures </hi>
+          </head>
+          <hi rend="bold"> By Frank McDonald, Environment Correspondent </hi>
+          <p> THE Minister for the Environment, Mr Dempsey, is pressing the Government to intorduce a range of <quote> "green taxation" </quote> measures in the Budget, including a benefit-in-kind tax on free off-street car-parking spaces in Dublin and other cities.
+            </p>
+          <p>
+            <quote> "I am particularly concerned to support the complementary measures proposed by the Dublin Transportation Office (DTO) to deal with the traffic problem and that includes taxing parking spaces as well as providing incentives for 'park-and-ride' facilities." </quote>
+          </p>
+          <p> Mr Dempsey told <hi rend="italic"> The Irish Times </hi> that he was also in favour of a carbon energy tax to help Ireland meet its commitment under the Kyoto Protocol to cap the increase in greenhouse gas emissions at 13 per cent above their 1990 levels by the year 2010.
+            </p>
+          <p>
+            <quote> "We have to seriously engage on this issue because it 's not something that will go away," </quote> he said. <quote> "And while we must keep an eye on the competitiveness and Irish industry, I 've come to the conclusion in recent months that a carbon tax is unavoidable." </quote>
+          </p>
+          <p> However, the Minister accepts that there is no possibility of taking such a radical step in time for the Budget on December 2nd. <quote> "What I 'm trying to do is to work towards a greening of the tax system that would take account of our legally binding obligations."</quote>
+          </p>
+          <p> For the past three years, green taxation has been under consideration by an inter-departmental committee, which includes the Department of the Environment and the Department of finance. However, little progress has been made on the issue. 
+            </p>
+          <p> According to sources, the committee meets on a regular basis in the two or three months before a Budget. Various ideas for reform are put forward and noted by the Department of Finance, which then says there is not enough time to do anything about implementing them. 
+            </p>
+          <p> As a result, recent Budgets have contained little more than token gestures towards green taxation – such as the tax differential in the price of unleaded petrol – with little sign of movement towards a more comprehensive, environmentally-minded approach.
+            </p>
+          <p> It is understood that Mr Dempsey accepted the argument that major changes could not be made in last year 's Budget on the understanding that the issue would be seriously tackled this year. But continuing procrastination by the Department of Finance has made this impossible. 
+            </p>
+          <p> In recent weeks, senior officials of the Department of the Environment have detected a change in the attitude of their counterparts in Finance – not because of an conversion to environmental concerns but because they are beginning to see green taxes as a useful tool. 
+            </p>
+          <p> This may be linked to the wider macro-economic pictures of the inflationary pressures that would be created if too much money is let into the economy as a result of tax breaks. Thus, they may see green taxes as a mechanism to claw back some of it.
+            </p>
+          <p> It is also understood that the Revenue Commissioners have shifted their position about raising concerns over the difficulties of collecting such taxes and are planning to talk to the DTO about how fiscal measures could assist in implementing its action plan.
+            </p>
+          <p> Apart from imposing benefit-in-kind tax on off-street car-parking spaces, Mr Dempsey favours replacing the current incentives for the construction of multi-storey car-parks with a new scheme which would provide tax breaks for the provision of peripheral "park-and-ride" sites.
+            </p>
+          <p> He is also believed to be pressing for major changes in vehicle registration tax (VRT), so that a higher rate would be levied on larger, less energy-efficient cars. The aim would be to <quote> "send out a signal"</quote> that the issue of green taxation was being treated seriously.
+            </p>
+          <p> In the longer term, the minister in urging his Cabinet colleagues to look at fiscal measures to support his recently unveiled national waste management plan, including the imposition of a landfill tax which would be paid by all waste producers – including households. 
+            </p>
+          <p> On the issue of a carbon energy tax, Mr Dempsey believes that doing nothing is no longer possible, even though there is bound to be strong opposition from the ESB and industrial high-energy users, such as Irish Cement, as well as from other Government departments.
+            </p>
+          <p> All of these interests are making submissions on the issue as part of a consultation process on the formulation of a greenhouse gas abatement strategy for Ireland, culminating in a consultative conference involving all parties – including environmental groups – on October 28th.
+            </p>
+          <p> This conference is likely to renew the focus on environmental taxes in the context of the 13 per cent cap agreed by Mr Dempsey as part of the EU burden-sharing arrangement reached in Luxembourg last June under which each member-state must achieve a specified target.
+            </p>
+          <p> Ireland has already attracted strong criticism from EU sources over the previous Government 's decision to abolish water charges, because this is diametrically opposed to environmental principles. But short of a directive from Brussels, the charges are unlikely to be reintroduced.
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/042.00000</textSigle>
+            <title>Kilkenny People</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Sean Keane</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-015$A">
+          <head>
+            <hi rend="bold">
+              <hi rend="underline"> HOGAN IS HOPEFUL </hi>
+            </hi>
+          </head>
+          <hi rend="italic"> by Sean Keane </hi>
+          <p>
+            <hi rend="bold"> KILKENNY will not lose out in a new coalition. The <hi rend="italic"> 'People </hi> has learnt that Deputy Phil Hogan of Fine Gael will be among the Ministers of State to be appointed in a new administration. </hi>
+          </p>
+          <p> There is no question of a derailment of the new three party coalition between Fine Gael, Labour and Democratic Left (D.L.) and a special D.L. delegate conference will go ahead this evening (Wednesday). 
+            </p>
+          <head>
+            <hi rend="bold"> Loss </hi>
+          </head>
+          <p> Deputy Hogan 's appointment will temper the loss to the county of the Minister of State portfolio held by Fianna Fé/ail 's Liam Aylward T.D. for almost three years. 
+            </p>
+          <p> Deputy Hogan will not be a member of the cabinet to be named by new Taoiseach, John Bruton. However, the 34 year old will be appointed to one of the key junior positions possibly in the economic sphere. 
+            </p>
+          <p> This will reflect his recent high public profile as Fine Gael spokesman on Transport, Energy and Communication. 
+            </p>
+          <p> He raised the deletion of key parts from a consultant 's report on the proposed mine in Galmoy in what became known as the Cowengate affair. 
+            </p>
+          <p> There will be no such job for Carlow 's Fine Gael Deputy, John Browne or for Deputy Seamus Pattison of Labour who looks unlikely to be brought into Government. 
+            </p>
+          <p> Despite suggestions to the contrary, Fine Gael are committed to entering Government and will have eight members in the new cabinet. 
+            </p>
+          <head>
+            <hi rend="bold"> Agriculture </hi>
+          </head>
+          <p> It is almost certain that Wexford T.D. Mr Ivan Yates will be the new Minister for Agriculture while Deputy Michael Lowry from Thurles, currently Fine Gael Chief whip will also receive a senior ministry possibly Tourism and Trade. 
+            </p>
+          <p> The Minister for Justice will be a Fine Gael appointee while the key Environment portfolio will go to Labour. There will be one or two members of Democratic Left, leader Proinsias de Rossa T.D. and probably Pat Rabbitte. 
+            </p>
+          <p> A key figure in the local Labour organisation feels there will be little change in the Labour appointees from the last cabinet but that there could be changes in their portfolios. 
+            </p>
+          <head>
+            <hi rend="bold"> Michael D. </hi>
+          </head>
+          <p> Michael D Higgins is the bookie 's warm favourite to be re-appointed as Minister for the Arts, Culture and Gaeltacht. 
+            </p>
+          <p> There is considerable speculation that senior counsel, Mr Dermot Gleeson will be offered the position of Attorney General. 
+            </p>
+          <p> A close confidant of Mr Bruton, it was at Mr Gleeson 's private residence that Mr Bruton first met with Labour leader, Mr Dick Spring for talks on a new government following the collapse of the Fianna Fé/ail-Labour administration. 
+            </p>
+          <p> However outgoing Minister for Equality and Law Reform, Mr Mervyn Taylor T.D. is also being mentioned for the position of Attorney General. He would be the first solicitor to hold the position. 
+            </p>
+          <p> Already Fine Gael activists in Kilkenny are looking forward to Deputy Hogan 's promotion. 
+            </p>
+          <p> He was elected to the Senate in 1987 having unsuccessfully contested the general election. He was elected to the Dé/ail in 1989 and re-elected in 1992. 
+            </p>
+          <p> He was co-opted on to Kilkenny Co Council in 1982 following the death of his father Tom. In 1985 he was elected Chairman of Kilkenny Co Council. 
+            </p>
+          <p> He holds a B.A. H Dip from University College Cork. He received his secondary education at St Joseph 's Freshford and at St Kieran 's College, Kilkenny. 
+            </p>
+          <p> On appointment, he will have to resign as a member of Kilkenny County Council and will also have to step down as a member of the South Eastern Health Board. 
+            </p>
+          <p> It is expected that these vacancies will not be filled until February and already there are strong indications that "new blood" will be brought in to strengthen the party at local level. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/042.00001</textSigle>
+            <title>Kilkenny People</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Sean Keane</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-0151$B">
+          <head>
+            <hi rend="bold"> Tried to eat cannabis </hi>
+          </head>
+          <p>
+            <hi rend="bold"> A MAN tried to eat a piece of cannabis resin when he was being interviewed in Kilkenny Garda Station. </hi>
+          </p>
+          <p>
+            <hi rend="bold"> Shane Ryan, </hi> Priory Lodge, John 's Quay, Kilkenny, pleaded guilty to possession of cannabis resin and to obstructing Sgt. Michael Quinlan, Garda Pat Starr and Garda Eamon Doyle. 
+            </p>
+          <p>
+            <hi rend="bold"> Garda Pat Starr </hi> gave evidence that he and Sgt. Quinlan went to the Kilford Arms at around 5 p.m. on November 12, on the basis of information they had received. 
+            </p>
+          <p> Garda Starr told Ryan, who was with two others, that he wanted to bring him to the Garda Station to search him, as he had reason to believe that he had a controlled drug. 
+            </p>
+          <p> When Ryan stood up, Garda Starr noticed a small slab of material underneath him. When he asked him to account for it, Ryan denied that it was his. 
+            </p>
+          <p> In the interview room at the Garda Station, Garda Starr left the slab of material on the counter and went next door to get an evidence bag. He had just left when he heard a commotion in the interview room. He returned to find Sgt. Quinlan grappling with the defendant. 
+            </p>
+          <p>
+            <quote> "Shane Ryan was attempting to eat the material. I retrieved it and placed it in an evidence bag," </quote> Garda Starr recalled. The material was found to contain .250 grams of cannabis resin. 
+            </p>
+          <p> Defending solicitor <hi rend="bold"> Mr Michael Lanigan </hi> said that the 20-year-old, who came from a very good family, was currently attending a hotel and catering college in Portrush. His obstruction of the Gardai was impulsive, when he realised the situation he had got himself into. 
+            </p>
+          <p>
+            <quote> "He believed he was facing the demise of his reputation and character and he acted in a way that was stupid and he is sorry for it," </quote> said Mr Lanigan.</p>
+          <p> The solicitor added that Ryan 's family was positively ashamed of the disgrace he had brought on them and he would be willing to undergo any test to show the court that he was drugs-free and would remain drugs-free. 
+                </p>
+          <p>
+            <hi rend="bold"> Judge William Harnett </hi> adjourned the case until February 14 for a Probation Officer 's report, querying substance abuse. 
+                </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/042.00002</textSigle>
+            <title>Kilkenny People</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Sean Keane</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-0151$C">
+          <head>
+            <hi rend="bold">
+              <quote> "Stay away from airports!" </quote> says Judge </hi>
+          </head>
+          <p> A YOUTH climbed into an ambulance outside St. Luke 's Hospital late at night and started blowing the horn, Kilkenny Court was told. 
+            </p>
+          <p> His defending solicitor said that <hi rend="bold"> Patrick Houlihan, </hi> 11 Ossory Park, Kilkenny, had always wanted to see the inside of an ambulance. 
+            </p>
+          <p>
+            <quote> "For God 's sake tell him to stay away from airports!" </quote> declared <hi rend="bold"> Judge William Harnett. </hi>
+          </p>
+          <p>
+            <hi rend="bold"> Inspector Michael Delaney </hi> said that Gardai were called to the hospital at around 11.15 p.m. on June 24, because youths were causing trouble and interfering with ambulances. 
+            </p>
+          <p> Houlihan was sitting in the front of an ambulance and was blowing the horn. He denied the incident when he was confronted by Gardai. He was summonsed for interfering with the mechanism of an ambulance. 
+            </p>
+          <p> Defending solicitor <hi rend="bold"> Mrs. Mary Molloy </hi> said that the 18-year-old had been drinking with friends during a World Cup match. One of his friends dislocated his arm and they went to the casualty department in St. Luke 's. Houlihan could not resist the temptation of getting into an ambulance outside the casualty section. 
+            </p>
+          <p>
+            <quote> "He tells me that he long harboured the desire to see what the inside of an ambulance looked like," </quote> Mrs. Molloy told the court. The solicitor added that this was the first time any member of her client 's family was in trouble. 
+            </p>
+          <p> Inspector Delaney confirmed that Houlihan came from good family. It was just a case of youths messing and there was no intention to remove the vehicle. 
+            </p>
+          <p> Noting that Houlihan should take his court appearance as a warning, Judge Harnett gave him the benefit of the Probation Act. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/042.00003</textSigle>
+            <title>Kilkenny People</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Sean Keane</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-0151$D">
+          <head>
+            <hi rend="bold"> Christmas winner for schoolgirl </hi>
+          </head>
+          <hi rend="italic"> By Carmel Hayes </hi>
+          <p> A CHRISTMAS card designed by a Kilkenny schoolgirl is now on sale throughout Dublin. 
+            </p>
+          <p> The card, designed by Bevin Grant from Piltown, was professionally printed after she was runner-up in a national competition. 
+            </p>
+          <p> And to mark her achievement, Bevin was presented with a prize by US Ambassador to Ireland Jean Kennedy Smith, at her residence in the Phoenix Park. 
+            </p>
+          <p> The national school student from Tybroughney, Piltown, was one of ten runners-up from hundreds of entries, in the national <hi rend="italic"> Irish Times / </hi> US Embassy Design a Christmas Card competition. 
+            </p>
+          <p> She was a special guest at a children 's Christmas party, complete with a buffet and present-laden Santa, which was hosted by the US Ambassador to announce the national winners. She was personally congratulated by Mrs. Kennedy Smith and was presented with a painting kit. 
+            </p>
+          <p>
+            <quote> "I was surprised to win and the day was very exciting," </quote> said the delighted 11-year-old, who attends Piltown National School. 
+            </p>
+          <p> Bevin 's cheerful design greatly impressed the judges and has now been printed for sale in aid of the children 's charities Barnardos and Focus on Children. 
+            </p>
+          <p> The card features a jolly snowman, wearing a red hat, scarf and gloves, who is holding a sheet of Christmas carols. 
+            </p>
+          <p> The cards are on sale from the Barnardos headquarters at Christchurch Square in Dublin and from the organisation 's shops in Clondalkin, Liffey street, Rathmines and Dun Laoghaire. 
+            </p>
+          <p> Bevin is now looking forward to sending her cards to friends and relations this Christmas. A keen artist, she has been successful in a range of competitions, particularly at Iverk Show. She is one of five daughters of Una and Jim Grant of Piltown. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/042.00004</textSigle>
+            <title>Kilkenny People</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Sean Keane</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-015$E">
+          <head>
+            <hi rend="bold"> CALLAN – The future looks bright </hi>
+          </head>
+          <p>
+            <hi rend="bold"> CALLAN is getting its best ever Christmas present this year with confirmation that the new bridge for the long awaited by-pass will start construction early in the new year. </hi>
+          </p>
+          <p> And people of Callan are in buoyant mood according to successful businessman and local public representative, Cllr. Jimmy Brett who said he was delighted with the news and feels that it will act as a catalyst for further development in the town. <p>
+              <p>
+                <quote> "My main political <sic> </sic> since I was first appointed to Kilkenny County Council has been to secure the by-pass for Callan." </quote>
+              </p>
+            </p>
+            <p> He said that it was great satisfaction that the long years of suffering endured by the people of Callan, truck drivers and motorists was at an end. 
+                </p>
+            <p> He told the <hi rend="italic"> 'People </hi> that the contract for the first stage of the multi million development had been awarded to John Craddock é Company, Naas. This has been approved by the National Roads Authority. 
+                </p>
+            <p> He thanked the management of Kilkenny Co Council for their work on bringing the project to fruition, the Minister for the Environment, Mr Michael Smith T.D. and the National Roads Authority. 
+                </p>
+            <p>
+              <quote> "Most of all I want to thank the people of Callan for their patience and support," </quote> Cllr Brett said. 
+                </p>
+                Local industries continue to blossom with S.F.L. Engineering continues to forge new contracts in previously untapped markets. 
+            </p>
+          <p> The Callan Bacon company is also trading extremely well while the small but hugely independent Callan Co-operative Society trading better than many of its bigger neighbours. 
+                </p>
+          <p> Callan acts as a magnet to shoppers from Kells, Kilmoganny, Windgap and Mullinahone who are happy to give their business to tried and trusted traders who have been with them through good times and bad. 
+                </p>
+          <p> Business woman Mrs Breda Somers of Adelphi House, Bridge Street has noticed an increase in heavy goods vehicles using Callan in the last few months. 
+                </p>
+          <p> It is thought that the drivers of these articulated lorries coming from Waterford and Tipperary have a better run to and from Dublin since the Kilcullen by pass opened. 
+                </p>
+          <p> Two new books on Callan have just been published. Volume one of Callan 's Pictorial Past is available at <amp> pound sign </amp> 5 per copy. 
+                </p>
+          <p> This is a must for anybody interested in their own place or in local history. It was produced by John O'Keeffe and Sean Holden. 
+                </p>
+          <p> The second is a detailed account of the goings on in the "Callan Tenant Protection Society." This excellent work was launched by Bishop Laurence Forristal in the town on Friday evening. 
+                </p>
+          <p> Callan has a fine academic record with both St Brigid 's College and the CBS Secondary School recording excellent results and adding to the reputation of the town. 
+                </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/042.00005</textSigle>
+            <title>Kilkenny People</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Sean Keane</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-015$F">
+          <head>
+            <hi rend="bold"> SFL – a sound structure </hi>
+          </head>
+          <p> SINCE the Berlin Wall came down, and the frontiers of Eastern Europe were opened, SFL Engineering Ltd. at Callan has been successful in capturing some of the market opportunities that have become available as a result of the major rebuilding programme that is presently taking place in Germany and these Eastern countries. 
+            </p>
+          <head>
+            <hi rend="bold"> Investment </hi>
+          </head>
+          <p> From Statoil, who have also invested heavily in the Irish market, SFL was successful in obtaining the contract to build a large number of new petrol retain forecourt canopies for their service stations and this contract is expected to run for three years. 
+            </p>
+          <p> SFL Engineering are steadily increasing their penetration of export markets and during 1994 carried out contracts in China, Israel, the Philippines, Denmark and Germany. 
+            </p>
+          <p> SFL employ approximately 70 people at its plant in Callan. The company expects additional jobs to be created as it further penetrates the export markets. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/044.00000</textSigle>
+            <title>Clare Champion</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-0141$A">
+          <head>
+            <hi rend="bold"> KILRUSH ROCKED BY LEADMORE CLOSURE </hi>
+          </head>
+          <p>
+            <hi rend="bold"> WEST Clare, and Kilrush in particular, was dealt another body low this week with the closure of ice cream manufacturers, Leadmore Dairies, with the loss of forty jobs. </hi>
+          </p>
+          <p>
+            <hi rend="italic"> Thirty employees at the Kilrush production plant and a further ten at their Cork distribution depot were made redundant last Friday and a meeting of Leadmore 's creditors has been fixed for Thursday next, December 22.</hi>
+          </p>
+          <p> This latest setback for Kilrush has prompted local public representatives to make an urgent appeal to Shannon Development and other state agencies to take whatever steps are necessary to ensure that the industry is saved. 
+            </p>
+          <p> Competition and weather related factors were blamed by a company spokesman for the problems which led to the closure of Leadmore Dairies which has been in operation since 1946. However, he stressed that the company would continue to trade for the moment with agents distributing their ice cream and frozen food products from existing stocks. 
+            </p>
+          <p> The spokesman said the company had been forced to make their employees redundant after negotiations with a potential buyer fell through. But, he hastened to add, there were ongoing negotiations with two other prospective buyers and he was hopeful that a deal could be struck with one of them to keep the long established industry going in West Clare. 
+            </p>
+          <p> Kilrush U.D.C. Chairman, Gerry O'Malley, summed up the feelings of townspeople when he described the closure of Leadmore Dairies as a <quote> "real tragedy". </quote> He said it was a terrible blow for the thirty employees and their families coming so close to Christmas. Mr. O'Malley also expressed his regret at the loss of the other jobs at the company 's Cork base. 
+            </p>
+          <p>
+            <quote> "The closure of leadmore Dairies marks the end of an era for Kilrush", </quote> said Mr. O'Malley. <quote> "The company provided good employment for many people since 1946". </quote>
+          </p>
+          <p> The Council Chairman said the latest round of job losses in Kilrush represented a cut of five per cent in the town 's industrial employment base. He said that if the proposed E.S.B. rationalisation programme was implemented, with the net effect of 200 job losses at Moneypoint, West Clare could be labelled an industrial blackspot. 
+            </p>
+          <p> Mr. O'Malley said that every possible effort should be made to secure a new owner for the company. He believed that Leadmore Dairies had enormous potential if new products were developed and new markets opened up. 
+            </p>
+          <p> The Council Chairman appealed to business people in the area to show their support for Leadmore by continuing to buy their products which were being distributed by agents from stock. 
+            </p>
+          <p> A Shannon Development spokesman said they were doing everything possible to facilitate a takeover of Leadmore by a new owner. He expressed the hope that a deal could be sealed with one of two interested parties. The spokesman said the possibility of getting Leadmore involved in a joint venture with another company could also be considered and this would involve diversifying into a new range of products aimed at a different area of the ice cream market from that which they had traditionally serviced. 
+            </p>
+          <p> Meanwhile Clare Co. Council suspended standing orders on Monday to discuss an emergency motion which sought the immediate intervention of the Government in averting the closure of the Kilrush plant. 
+            </p>
+          <p> Describing the announcement of the job losses <quote> "as a black day for West Clare", </quote> Fianna Fail councillor Bill Chambers tabled the motion, unanimously adopted, which called on the Government, the I.D.A. and Shannon development to come up with a rescue package to save Leadmore Dairies. 
+            </p>
+          <p> His views were endorsed by fellow party member, Patrick Keane, who said that the loss of thirty jobs in Kilrush was comparable to the loss of three hundred jobs in cities like Cork and Dublin. <quote> "It 's important that the Government and some other state agencies step in and save the jobs at the Kilrush plant", </quote> he remarked. 
+            </p>
+          <p> Kilrush councillor, Tom Prendeville, said that his immediate reaction to the close of the factory was one of deep regret and disappointment. Leadmore Dairies prided itself in the abiding loyalty and great sense of cooperation that existed between workers and management in this family-owned entreprise right up to the closure announcement last Friday. 
+            </p>
+          <p> Leadmore Dairies was one of the most successful ventures ever undertaken by the Glynn family in Kilrush. Close on sixty people were employed there during the high season and represented a huge injection of <amp> pound sign </amp> 1 million annually into the local economy through wages and services. 
+            </p>
+          <p> However, he said the closure wasn't totally unexpected. In recent months various factors had militated against the continued commercial viability of he operation. Despite increased marketing emphasis, sales of ice cream products had remained static, a matter not helped by poor weather, the impact of cheap imported ice cream products, depressed profit margins and ever tightening credit controls. 
+            </p>
+          <p>
+            <quote> "The closure of Leadmore Dairies is another body blow to the economy of West Clare which is still reeling from the fallout effects of the closure of Woodfab, Ceremacis, Glynn 's Mills and the threat of job cutbacks through the E.S.B. rationalisation plan at Moneypoint", </quote> he commented. 
+            </p>
+          <p> Cllr. Prendeville said that there still remained <quote> "a slight glimmer of hope" </quote> that the Leadmore Dairies factory could be sold as a going concern and in that event some of the jobs lost last Friday could be salvaged under a new consortium. 
+            </p>
+          <p> Senator Madeleine Taylor-Quinn has described the loss of 40 jobs at Leadmore Dairies as a <quote> "tragedy" </quote> and a major economic setback to Kilrush. It was also a family disaster for the Glynn family who have been good employers in the town, she said. 
+            </p>
+          <p> She said that every effort must now be made to find a purchaser or arrange a joing venture between different parties to take over the operation of Leadmore Dairies which had been very successful in the past. All agencies, private and semi-private, would also have to give every backing possible to rescue the plant and ensure that the jobs were put back in place. 
+            </p>
+          <p>
+            <quote> "The people and the areas cannot survive such a setback, in addition to the 200 jobs already under threat at Moneypoint Power Station", </quote> said Senator Taylor-Quinn. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/044.00001</textSigle>
+            <title>Clare Champion</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-0141$B">
+          <head>
+            <hi rend="bold"> Flash Floods After Deluge </hi>
+          </head>
+          <p>
+            <hi rend="bold"> A number of homes were flooded in Bridgetown and Ennistymon and traffic was disrupted on a number of roads around the county as a result of Tuesday morning 's deluge. </hi>
+          </p>
+          <p> Fortunately the flash floods, which followed from the half inch of rain that fell in a matter of hours, had subsided by Tuesday evening and everything was back to normal. 
+            </p>
+          <p> However, three families in Bridgetown and one in Ennistymon have been left to count the cost of the heavy rain as their properties were damaged by flooding. The houses on the outskirts of Sourth East Clare village were flooded to a depth of over a foot when water cascaded off the land and Killaloe Fire Brigade was called to deal with the emergency. 
+            </p>
+          <p> In Ennistymon, Bill and May Chapman 's two hundred year old Connell 's Cottage home at Deerpark, was flooded to a depth of two feet when a <sic> steam </sic>
+            <corr> stream </corr> to the rear of their home burst its banks. The local fire brigade had to pump out the house. 
+            </p>
+          <p> While there was minor flooding on some roads and a number of motorists ran into difficulties when their cars stalled, Gardai reported no major problems. 
+            </p>
+          <p> A considerable amount of farmland, particularly in the North Clare area was also hit by the flooding, creating problems with foddering livestock for some farmers. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/044.00002</textSigle>
+            <title>Clare Champion</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-014$C">
+          <head>
+            <hi rend="bold">
+              <italics> Patients Test Positive in Hepatitis Screen  </italics>
+            </hi>
+          </head>
+          <p>
+            <hi rend="bold"> FIVE of the patients who attended the Hepatitis B screening programme at Limerick Regional Hospital on Friday last have tested positive for infection, according to a statement issued by the Mid-Western Health Board on Wednesday. </hi>
+          </p>
+          <p> Out of a total of 1,520 patients, mainly from the Clare/Limerick area, who were contacted by the Health Board, 407 attended the screening programme and the five patients who tested positive have been contacted to reattend for further tests. 
+            </p>
+          <p> The screening programme was ordered after Dr. Umesh Gaud who worked in five Irish hospitals during the late 1980s was convicted in London last October for practising while knowingly concealing the fact that he suffered from Hepatitis B. He is now serving a jail sentence in Britain. 
+            </p>
+          <p> Dr. Gaud had worked in the Accident and Emergency Department at the Regional Hospital, Limerick for six months in 1987. 
+            </p>
+          <p> However, Regional Hospital General Manager, Ian Carter said this week that there was still no evidence that Dr. Gaud had caused any infection to any of the hospital 's patients during his stay in Limerick. 
+            </p>
+          <p> Meanwhile, the screening programme continues at the Regional Hospital this week and the special Helpline 1800-512500 is available to the public between 9.30 a.m. and 5.00 p.m. 
+            </p>
+          <p> Results of tests are made available within 48 hours. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/044.00003</textSigle>
+            <title>Clare Champion</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-014$D">
+          <head>
+            <hi rend="bold"> Drink Law Hitting Rural Communities </hi>
+          </head>
+          <p>
+            <hi rend="bold"> Rural communities are now prisoners in their homes and are afraid to venture out because of the draconian penalties attached to the Road Traffic Act, said the Vintners ' Federation of Ireland when discussing plans to hold an emergency meeting on Tuesday next to review the new drink-driving level which has caused a huge drop in trade in many pubs all over the country. </hi>
+          </p>
+          <p> For the second week-end in a row, Clare publicans were hit by the new law and they spoke of bleak times ahead for the rural pub, particularly over the Christmas and New Year periods. 
+            </p>
+          <p> The new drink-driving limit and penalties have sparked off the biggest ever crisis in the VFI, said <sic> it 's </sic>
+            <corr> its </corr> president Michael Moloney of Ruan, who forecast that many pubs will close and thousand of jobs will be lost over the tougher drink driving regulations. Publicans and members of the public were expressing fear, anger and frustration. 
+            </p>
+          <p> The VFI, which represents 6,000 pub owners outside of Dublin, has not been sitting back and has highlighted the implications of the new restrictions over the past number of months, said Mr. Moloney. He added that their warnings, however, were not listened to. 
+            </p>
+          <p> The VFI President described national advertising advising motorists to use Dart and bus services as offensive to people in rural areas who could not avail of such services. He had already made contact with the Bus Eireann operations manager in Dublin to provide extra and later bus services in country areas. He was told, however, that they did not intend providing such services. 
+            </p>
+          <p>
+            <quote> "This is disgraceful and the Government should put pressure on them to provide them", </quote> said Mr. Moloney. 
+            </p>
+          <p> He also called on the legislators to reduce the fines for drink-driving offences and said that the new regulations would also be a big blow to tourism as when visitors arrived in country areas they would find no shops, no Garda station, no post office and no pub. 
+            </p>
+          <p> VFI chief executive Tadgh O'Sullivan, also contacted the Ministers for the Environment and Justice this week, expressing their concern. He said there was no public transport in rural Ireland – not even taxis or cabs. The national safety council 's adverts only served to further annoy the community. 
+            </p>
+          <p>
+            <quote> "The fact that a person who has consumed two pints is deemed as guilty, with mandatory penalties, as someone who has consumed 20 pints, is unacceptable", </quote> he said. 
+            </p>
+          <p> He forecast that deaths on the roads will increase over Christmas and said that the new legislation would bring loss of life as well as loss of jobs as they would have people walking and cycling on dark country roads who would be the victims of those speeding, untouched by the law. 
+            </p>
+          <p> He called for action to modify the penalties: give discretion to the courts in place of mandatory penalties: allow a more reasonable approach by gardai (stopping people on the way to work must cease) and provide much needed public transport in rural areas. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/044.00004</textSigle>
+            <title>Clare Champion</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-014$E">
+          <head>
+            <hi rend="bold"> Schoolgirl dies in road tragedy </hi>
+          </head>
+          <p>
+            <hi rend="bold"> THERE was widespread sympathy for the family of Lissycasey schoolgirl who was killed in a traffic accident on the main Ennis to Kilrush Road last week-end. </hi>
+          </p>
+          <p> Eleven year old Joan Melican, Decomade, Lissycasey, died instantly following a collision with a passing car as she made her way to Lissycasey National School. The accident happened a short distance from her home just before 9.30 a.m. on Friday morning. 
+            </p>
+          <p> Joan was the youngest member of a family of six and she is survived by her parents, Patrick and Peggy, her four sisters and one brother. 
+            </p>
+          <p> There were huge attendances at both the removal of remains from Normoyles Funeral Home on Saturday evening to the local church and at the funeral on Sunday. Joan 's schoolmates at Lissycasey school and members of the local GAA club formed a guard of honour on both days. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/047.00000</textSigle>
+            <title>Roscommon Herald</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-016$A">
+          <head>
+            <hi rend="bold"> Environment Award For Council </hi>
+          </head>
+          <p> Roscommon County Council this week picked up its second major award in two years from the Department of Environment 's Local Authority Environment Awards scheme. 
+            </p>
+          <p> Two years ago, it won the overall award and this year was the winning authority in the County Council category. It received a cheque for <amp> pound sign </amp> 5,000 which will be used to upgrade and enhance the amenity area at Dalton Terrace, Ballaghaderreen. 
+            </p>
+          <p> This year 's win, said the Minister for Environmental Protection John Browne, was evidence of the <quote> "consistently high quality" </quote> of the council 's work. 
+            </p>
+          <p> In particular, he added, it had established a Farming Community Programme in association with the IFA which encouraged farmers to take care when disposing of waste plastic arising from round-baled silage. 
+            </p>
+          <p> In addition, a free paint scheme was available for the Tidy Towns committees and a freephone service was provided during Clean-Up Roscommon Week. This was linked to a recycling programme which included a cardboard recycling scheme as well as glass and can recycling schemes. 
+            </p>
+          <p> Overall, the judges considered that the submission was particularly comprehensive. They were also impressed by the Council 's decision to base their environmental programme on the results of a questionnaire completed by local community groups. 
+            </p>
+          <p> The overall winner for 1994 was Drogheda Corporation which also won the 15,000 plus urban authorities category. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/047.00001</textSigle>
+            <title>Roscommon Herald</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-016$B">
+          <head>
+            <hi rend="bold"> Garda Crackdown Gains Momentum </hi>
+          </head>
+          <p>
+            <hi rend="bold"> As the Garda crackdown on drinking and driving moves into top gear throughout the county publicans have warned that thousands of jobs will be lost unless the Government quickly provides a late night public transport service and eases the penalties under the new legislation. </hi>
+          </p>
+          <hi rend="italic">
+            <hi rend="bold"> By Christina McHugh </hi>
+          </hi>
+          <p> This week Crime Prevention Officer for the Roscommon/East Galway Garda Division, Sergeant Larry Shine, warned motorists who intend taking a drink over the Christmas period to <quote> "arrange to have a competent sober friend" </quote> available to drive them home, ensuring that they are properly <sic> ensured </sic>
+            <corr> insured </corr> to do so. <quote> "Eliminating excessive speed and drunk driving will make a major contribution towards safer roads," </quote> said Sergeant Shine. 
+            </p>
+          <p> Warning of Garda checkpoints on all roads in the county, he reminded motorists that following the new legislation, which came into effect on December 2nd, that a conviction for drunk driving can lead to the imposition of a penalty of <amp> pound sign </amp> 1,000 and or six months imprisonment with automatic disqualification from driving for a period of two years for a first offence. <quote> "You may have to undergo a driving test before you get your driving licence back or obtain a certificate of fitness," </quote> he explained. <quote> "People who need a vehicle in their line of business, to get to work or tend to family needs should consider these factors," </quote> Sgt. Shine stressed. 
+            </p>
+          <p> However, as the new legislation begins to take its toll on rural publicans in particular, the President of the Vintners Federation of Ireland, Mr. Michael Moloney, stressed that already business is down by almost 50 <amp> per cent sign </amp> in some areas since the new drink driving limit was introduced. 
+            </p>
+          <p> Warning of the loss of thousands of jobs, Mr. Moloney said that <quote> "this piece of legislation will be the cause of pub closures and job losses around the country because the penalties for enjoying oneself are now so severe that the Irish people are frightened to go out to their local pub or to a friend 's house." </quote>
+          </p>
+          <p> He described the situation in rural villages as even <quote> "worse than the rest of the country", </quote> adding that people have now become prisoners in their own homes. 
+            </p>
+          <p> Mr. Moloney suggested that the Government should ensure that people are treated more fairly and with more respect. <quote> "The government should reduce the penalties and introduce immediately alternative transport arrangements around the country," </quote> he said. 
+            </p>
+          <p>
+            <quote> "Ordinary people all around the country are frustrated with this new legislation. Normally local politicians would listen to the people of Ireland and act as their voice at national level, but politicians today are too busy looking after their own affairs about being in or out of Government. They are not paying any attention to the things which are causing the destruction of a vital part of Irish culture," </quote> claimed Mr. Moloney. 
+            </p>
+          <p> Meanwhile with Christmas shopping in full swing and the January sales just around the corner Gardai ask shoppers to take precautions as regards their personal security and the security of their vehicles. 
+            </p>
+          <p> Sgt. Shine advises the public to bring only the minimum amount of money to meet shopping needs and not to leave goods on view <sic> ion </sic>
+            <corr> in </corr> unattended vehicles. 
+            </p>
+          <p>
+            <quote> "With hazardous driving conditions a likely feature on our roads in the coming weeks, we suggest that now is an appropriate time to check that your vehicle is in a roadworthy condition" </quote> said the Sergeant. <quote> "Excessive speed is a contributing factor in many road accidents. Motorists should allow sufficient time to complete their journeys and obey the speed limits." </quote>
+          </p>
+          <p> For pedestrians the Gardai have this advice- <quote> "walk on the correct side of the roadway. When walking during the <sic> house </sic>
+              <corr> hours </corr> of darkness wear bright coloured outer clothing and wear an armband." </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/047.00002</textSigle>
+            <title>Roscommon Herald</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-016$C">
+          <head>
+            <hi rend="bold"> Man Given Warning on Attitude to Gardai </hi>
+          </head>
+          <p>
+            <hi rend="bold"> A Ballymote man who claimed he was <quote> "hassled" </quote> by a Garda had summonses against him dismissed when he apologised before Boyle District Court and when the court heard that he had a hearing problem. </hi>
+          </p>
+          <p> Before Judge John Neilan for driving without insurance, giving a false name and not wearing a set belt at Greatmeadow, Boyle on August 3rd last was Brian Leonard, Carrowkeel, Ballymote. The owner of the vehicle, Gerry Clarke, Clerhone, Ballintogher, Co. Sligo, who was a passenger in the vehicle, was fined <amp> pound sign </amp> 200 and had his licence endorsed by Judge Neilan for allowing his car to be driven without insurance. The summons for driving without insurance was dismissed against Leonard. 
+            </p>
+          <p> Garda Gerald Barry told the court that when he and Garda Peter Lennon stopped Clarke 's Opel Kadett car, he heard Leonard give an incorrect name to Garda Lennon. The defendant subsequently gave his correct name. 
+            </p>
+          <p>
+            <quote> "I recall saying to Mr. Leonard to give his correct name which he did," </quote> explained the Garda, but replying to Mr. John Kelly, Solicitor for Leonard, he admitted that he couldn't say whether the other Garda asked the defendant for his name. 
+            </p>
+          <p> Mr. Kelly 's contention was that in relation to Leonard giving a false name, that of Gerard Clarke, when questioned on that night, his client believed that Garda Lennon asked him who owned the car and not for his name. 
+            </p>
+          <p> Leonard, in giving evidence, said that he had been at a dance in Roscommon. When the dance was over, Clarke requested that he drive his (Clarke 's) car home, in view that he (Clarke) had had a <quote> "few pints" </quote> too many. 
+            </p>
+          <p>
+            <sic> The </sic> Witness said that he first made sure that he was fully covered on Clarke 's insurance, which he believed he was. 
+            </p>
+          <p> He went on to say that when the car was later stopped by Gardai, he remembered Garda Lennon asking him <quote> "who owns the car"? </quote> He replied <quote> "Gerry Clarke." </quote> He informed Judge Neilan that subsequently, the Garda had used <quote> "abusive language", </quote> and told him to <quote> "get out of the car." </quote>
+            <quote> "He accused me of being drunk," </quote> explained the defendant. He added that he did not remember Garda Barry saying anything. 
+            </p>
+          <p> Under cross-examination from Supt. P.J. Ward, Leonard denied that the accompanying Garda had asked him to give his correct name, and confirmed again that Garda Lennon was being abusive. <quote> "He told me to get out of the f <amp> dash sign </amp> ing car and accused me of being drunk" </quote> said Leonard. 
+            </p>
+          <p> When Leonard told the court that he was still seated in the car when Garda Barry came over <quote> "five or six minutes" </quote> after the other Garda had asked him <quote> "to get out", </quote> Judge Neilan wondered how he could reconcile such a statement. 
+            </p>
+          <p> The Judge also added that <quote> "the defendant had levelled very serious accusations against Garda Lennon. It 's a serious allegation to make." </quote>
+          </p>
+          <p> Solicitor, Mr. Kelly said that there appeared to be <quote> "a lot of confusion" </quote> over the time-scale of events, and felt that <quote> "people have a different perspective of time." </quote>
+          </p>
+          <p>
+            <quote> " <sic> There 's </sic>
+              <corr> There </corr> appears to be some misunderstanding as to what was said that night," </quote> he added. 
+            </p>
+          <p> The Judge responded by saying <quote> "I 'm not prepared to stand idly by, and allow accusations to go unfounded." </quote>
+          </p>
+          <p> Leonard, in trying to clarify the situation said: <quote> "He (Garda Lennon) told me to walk up and down the road, and accused me of being drunk. He was hassling me." </quote> The defendant, who explained he didn't take a drink, went on to say <quote> "I thought I was doing Clarke a good turn." </quote>
+          </p>
+          <p>
+            <quote> "Why do you have a difficulty with the Gardai carrying out their duties," </quote> he asked. 
+            </p>
+          <p> Supt. Ward explained to the court that if the defendant was unhappy with the Garda 's behaviour the options were there for him to make a complaint. 
+            </p>
+          <p> Leonard, a single, unemployed man, was warned of his attitude to Gardai by the judge, who declared that they are <quote> "citizens of the state and should be treated with a degree of dignity." </quote>
+          </p>
+          <p> The charge of insurance was dismissed against him, but he was initially fined <amp> pound sign </amp> 25 for giving a false name, and further fined <amp> pound sign </amp> 15 for not wearing a seat-belt. However, the summonses were later dismissed when Leonard apologised to the court, and when it was later discovered that the defendant had a hearing problem. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/047.00003</textSigle>
+            <title>Roscommon Herald</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-016$D">
+          <head>
+            <hi rend="bold"> Working Group Set Up To Examine Boyle College </hi>
+          </head>
+          <p>
+            <hi rend="bold"> The proposed changes in the second level educational scene in the Boyle and Ballghaderreen catchments were once again the subject of queries from members of the Co. Roscommon Vocational Education Committee at its December meeting on Monday. </hi>
+          </p>
+          <hi rend="italic"> By Brian Cunniffe </hi>
+          <p> The meeting was told by the Committee Chief Executive Officer, Mr. Kevin McBrien, that the <amp> pound sign </amp> 1.7m Department of Education allocation for Boyle 's new school would be for new buildings only. He added that the Department of Education were currently making a survey of work needed on the existing buildings. He also informed the meeting that the V.E.C. had no plans to dispose of its property in Ballaghderreen. 
+            </p>
+          <p> Providing the meeting with an update on the Boyle developments since the last meeting Mr. McBrien said that a meeting took place on December 6th in Boyle. The Managements of the three schools and representatives of all the staffs met then with the Independent Facilitator and there was a very frank and open discussion. A working group was set up consisting of parents, management and teachers to examine various modules of Community Colleges in existence <quote> "to see which of those would be availed of" </quote>
+          </p>
+          <p> Mr. Christy Brady said that there was delight around the Boyle area that a new school was coming. He then queried the nature of the <amp> pound sign </amp> 1.7m allocation as to whether or not some of it would be expended on refurbishing existing buildings. 
+            </p>
+          <p> Mr McBrien- <quote> I understand the <amp> pound sign </amp> 1.7m is in respect of new buildings. I admit it would take quite a considerable sum to refurbish some existing buildings. </quote>
+          </p>
+          <p> Regarding Ballaghaderreen Mr. McBrien said that a meeting was arranged for January 12th next involving the Management of the three schools in Ballaghaderreen, the teacher representatives and union representatives to discuss the pros and cons associated with the staffing situation involving the amalgamated schools. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/047.00004</textSigle>
+            <title>Roscommon Herald</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-016$E">
+          <head>
+            <hi rend="bold"> A Guide to Choosing Toys </hi>
+          </head>
+          <p> Parents and relatives buying toys for Christmas have been asked to consider the "play value" of toys, as well as the safety factors when deciding on gifts. The appeal comes from the National Children 's Resource Centre who have just launched, with Dunnes Stores, a free guide for parents and guardians on selecting toys for children and young people. 
+            </p>
+          <p> Entitled "A Guide To Choosing Toys", the booklet has been compiled to help parents and relatives make the right toy choices in order to encourage the development of children in their care. 
+            </p>
+          <p>
+            <quote> "Children learn through play," </quote> says Angela Canavan from the National Children 's Resource Centre. <quote> "Play helps children to acquire new skills and abilities, fosters creativity and enhances overall development. Toys play an integral part in this process, whether to develop independence, encourage sharing, stimulate intellectual development or fostering creativity." </quote>
+          </p>
+          <p> The Guide includes basic criteria for selecting toys and includes suggestions for each stage of development, from a baby, up through pre-school years and up to teenagers. 
+            </p>
+          <p> The Dunnes Stores guide is available free of charge from the National Resource Centre (Tel: 01 – 4539699) and copies can be obtained by sending a stamped-addressed envelope (.30p) to the National Children 's Resource Centre, Barnardo 's, Christchurch Square, Dublin 8. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/048.00000</textSigle>
+            <title>Business Telegraph</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maurice Neill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-008$A">
+          <head> 'Privatisation hikes energy costs' Maurice Neill </head>
+          <p> A senior industrialist today attacked rising energy costs and blamed the privatisation of Northern Ireland Electricity. 
+            </p>
+          <p> Michael McVeigh, works director of the 25-year-old Hoechst chemical plant in Limavady, said the price of power has put new pressure on vulnerable companies. 
+            </p>
+          <p> The German-based Hoechst reported a massive loss last week and warned of a new round of international cost cutting. 
+            </p>
+          <p> Neighbouring Du Pont in Londonderry has already trimmed its workforce as recession sweeps the European chemical giants. 
+            </p>
+          <p>
+            <quote> "We are struggling to maintain profitability in the middle of a deep recession and yet face a rise in energy costs of as much as 17pc," </quote> said Michael McVeigh. 
+            </p>
+          <p>
+            <quote> "This kind of increase is simply unacceptable," </quote> he added. 
+            </p>
+          <p> The plant, one of the province 's 20 largest energy consumers, employs 320 producing polyester yarns mainly for the European clothing industry. It pays a power bill of around <amp> pound sign </amp> 1.25 m a year. 
+            </p>
+          <p> The Confederation of British Industry here warned Government Northern Ireland already has some of the highest energy costs in Europe but failed to win any safety guarantees pre-privatisation. 
+            </p>
+          <p> Frank Irvine NIE energy marketing manager said: <quote> "Excluding rises in fuel costs electricity prices in 1994/95 are expected to rise in line with inflation." </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/048.00001</textSigle>
+            <title>Business Telegraph</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maurice Neill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-008$B">
+          <head> 'Bid-peddling' slammed Yvette Shapiro </head>
+          <p> RECOVERY in the Northern Ireland construction sector will not occur until tender bids return to <quote> "realistic" </quote> levels, a building industry chief warned today. 
+            </p>
+          <p> Gordon Burnison, director of the Construction Employers Federation in the province, said the organisation 's latest quarterly survey revealed serious concerns about pricing of contracts. 
+            </p>
+          <p>
+            <quote> "Tender prices are still too low and, in order for firms to win contracts, they are being forced to offer unrealistic prices." </quote>
+          </p>
+          <p> In May, the Housing Executive revealed that some firms were building houses at a loss because they were so desperate for business. 
+            </p>
+          <p> Earlier in the year, the Northern Ireland branch of the Confederation of Specialist Engineering Contractors claimed that <quote> "bid-peddling" </quote> was making a mockery of the tendering process and was damaging to the entire construction industry. 
+            </p>
+          <p> Low pricing is putting pressure on a sector which is currently struggling to climb our of recession, according to the Construction Employers Federation survey which shows workload levels down in almost every area of activity. 
+            </p>
+          <p> The results are disappointing, since a survey earlier in the year reflected more "positive trends" and predicted an improvement in volumes by now. 
+            </p>
+          <p>
+            <quote> "Demand has flattened in recent months and the recovery anticipated earlier in the year has not been sustained," </quote> said Mr Burnison. 
+            </p>
+          <p> Unemployment levels, which fell earlier in the year, are now climbing again: around 18,400 construction workers are currently on the dole. 
+            </p>
+          <p> Despite the current gloomy situation, the Federation is optimistic for the second half of the year. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/048.00002</textSigle>
+            <title>Business Telegraph</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maurice Neill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-008$C">
+          <head> Parker for Babcock </head>
+          <p> Harland and Wolff 's outgoing chairman, John Parker, is likely to take over as chief executive of Babcock International, the UK-based engineering company headed by Lord King. 
+            </p>
+          <p> Announcing Mr Parker 's resignation last week, the shipyard would only say that he was going to join an un-named <quote> "major international group" </quote> . 
+            </p>
+          <p> But weekend newspaper reports, backed up by senior industry sources, suggest that the popular shipyard boss will join Babcock in October. 
+            </p>
+          <p> The Buckinghamshire-based company builds and equips power stations all over the world and, as a joint venture partner in Babcock-Thorn, manages the Rosyth Dockyard in Scotland on behalf of the Government. 
+            </p>
+          <p> It is this Rosyth connection which makes Mr Parker an ideal candidate for the top job at Babcock. His success in guiding Belfast Shipyard through privatisation and keeping it afloat during the worst recession in the ship-building trade has won him respect throughout the industry worldwide. 
+            </p>
+          <p> If his appointment at Babcock is confirmed, Mr Parker will replace Oliver Whitehead, who left the company in May. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/048.00003</textSigle>
+            <title>Business Telegraph</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maurice Neill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-008$D">
+          <head> Words of wisdom – at <amp> pound sign </amp> 200 a day Robin Morton </head>
+          <p>
+            <hi rend="bold"> Several big names are being lined up for the Northern Ireland conference circuit this autumn – and businessmen will pay more than <amp> pound sign </amp> 200 a day to hear their words of wisdom. </hi>
+          </p>
+          <p> Sir John Harvey Jones, the former ICI chairman, known to television audiences for his Troubleshooter series, is to be at the rostrum at the Slieve Donard Hotel in Newcastle next week. 
+            </p>
+          <p> The man who turned a loss into a <amp> pound sign </amp> 1bn profit in 30 months will be addressing the Chartered Institute of Public Finance and Accountancy conference. 
+            </p>
+          <p> Also addressing the conference will be Sir John Banhanm, the former director general of the Confederation of British Industry, and current chairman of the Local Government Commission for England. 
+            </p>
+          <p> The three-day CIPFA conference, which starts next Wednesday, is entitled "Preparing to Win – Northern Ireland in Partnership". 
+            </p>
+          <p> Billy Little, CIPFA 's manager in Northern Ireland, said the event would have a wide appeal to those in business, as well as their public sector counterparts. 
+            </p>
+          <p> The subjects covered will range from the Northern Ireland economy and compulsory competitive tendering to how to manage your bank manager. The aim is to show how the private and public sectors can work in tandem. 
+            </p>
+          <p> Delegates taking part in the full programme and staying in the hotel are paying <amp> pound sign </amp> 499 a head, while tickets for the star speaker day (Thursday) are <amp> pound sign </amp> 235. 
+            </p>
+          <p> The two Sir Johns will be delivering keynote addresses and then taking part in a question and answer session with delegates. 
+            </p>
+          <p> CIPFA said the main conference, which includes workshops and training sessions, had attracted more than 300 delegates, and around 400 had booked for the Thursday. 
+            </p>
+          <p> Meanwhile, plans were unveiled today for the Growing a Green Economy conference at the Balmoral Conference Centre in Belfast on Wednesday October 27. 
+            </p>
+          <p> The one-day event is the first fruits of the Green Economy Working Group which was set up earlier this year by Robert Atkins. 
+            </p>
+          <p> The impetus for the conference has come from current reforms in environmental legislation. The speakers will show how the development of the green market can create opportunities for local businesses. 
+            </p>
+          <p> Speakers will include Jerry Rendell, chief executive of the UK Ecolabelling Board, Shane Molloy, managing director of Lever Ireland, and Hilary Thompson, head of NatWest 's environmental management unit. 
+            </p>
+          <p> Tickets cost <amp> pound sign </amp> 75, and Robin Dixon, chairman of the working group, said the event would be a turning point for local business and its understanding of the environmental challenge. 
+            </p>
+          <p> Also in October, the Training and Employment Agency is organising an afternoon seminar for chief executives on the subject of "The Virtual Corporation", an American system whereby companies can develop through subsidiary businesses. 
+            </p>
+          <p> The event, on Thursday October 14, at the Slieve Donard Hotel, and the main speaker is Dr Roger Nagel from Lehigh University U.S.A. – tickets free. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/048.00004</textSigle>
+            <title>Business Telegraph</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maurice Neill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-008$E">
+          <head> Batting for Northern Ireland </head>
+          <p> The Northern Ireland Partnership was set up by the Industrial Development Board in October 1983. Its first co-ordinator was Dr George Chambers, former chief executive of the Milk Marketing Board. 
+            </p>
+          <p> It is an international voluntary network of 850 business and professional people in Britain, the Continent, the United States, Canada and the Far East. 
+            </p>
+          <p> Some members are Ulster expatriates who have made the grade overseas. Others are business executives who have associations with the province, perhaps through education or family links. 
+            </p>
+          <p> The Partnership 's primary aim is to encourage inward investment in the province. But more recently the emphasis has been on improving export potential for companies in the province. 
+            </p>
+          <p> Another aim is to counter bad publicity for Northern Ireland by emphasising the positive side of the province. 
+            </p>
+          <p> Members of the partnership have given a helping hand to several industrialists who have been attracted to the province. 
+            </p>
+          <p> One example is the automotive components plant set up by Ryobi at Carrickfergus. An Ulster academic based in the US urged the head of the Japanese company to consider Northern Ireland as a location. 
+            </p>
+          <p> Last year, the Belfast based mechanical and electrical engineers Rotary International secured a substantial contract in Japan thanks to a contact made by the Partnership. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/048.00005</textSigle>
+            <title>Business Telegraph</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maurice Neill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-008$F">
+          <head> Sutherland on mission to end talks deadlock Business Telegraph reporter </head>
+          <p> World trade negotiator Peter Sutherland is in Paris today in a bid to stop the Uruguay Round of the General Agreement of Tariff and Trade talks slipping backwards to the deadlock of a year ago. 
+            </p>
+          <p> The Irish diplomat must win new concessions from the hardline French government if he is to meet a deadline for a deal in December. 
+            </p>
+          <p> The fate of Northern Ireland 's two most important industries, textiles and agriculture, depend on the outcome of the talks, now almost two years behind schedule. 
+            </p>
+          <p> The textile and clothing industry, which employs 28,000 here, is under renewed pressure from exporters in the developing world and is seeking a new set of rules to be agreed at the GATT table. 
+            </p>
+          <p> The province 's <amp> pound sign </amp> 1.5bn agriculture and food industry will be offered new markets if the French will agree to endorse last year 's Blair House agreement cutting subsidies to EC farmers. 
+            </p>
+          <p> France, Europe 's largest exporter of food, is under pressure from a powerful farm lobby but remains the only obstacle to an agreement on agriculture and GATT progress. 
+            </p>
+          <p> The Northern Ireland Textiles Association has repeatedly called for a swift conclusion to the talks process to safeguard jobs and businesses here. Uncertainty has thrown a questionmark over investment in both textiles and food processing. 
+            </p>
+          <p> Said GATT chairman Peter Sutherland: <quote> "If we don't have a Uruguay Round you can forget talk of a new world order in the post-Iron Curtain Age." </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/048.00006</textSigle>
+            <title>Business Telegraph</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maurice Neill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-008$G">
+          <head> Picking a way through the mortgage minefield Anthony Swanston </head>
+          <p>
+            <hi rend="bold"> MORTGAGES have always been a minefield, but never more so than now. </hi>
+          </p>
+          <p> With constant downward pressure on interest rates lending competition really is hotting up. It is interesting that in Great Britain one of the most aggressive mortgage lenders is Bank of Ireland. 
+            </p>
+          <p> It is confusing that the deals on offer in Great Britain are not always available here. So let us look at the mortgage opportunities which exist and the points to watch out for. 
+            </p>
+          <p> 1: By locking into a fixed rate now you may not be absolutely at the bottom of the market, but you cannot be far from it. 
+            </p>
+          <p> Better to get in too soon than miss out completely – there is always the possibility that between application and completion the rate will reduce again. 
+            </p>
+          <p> 2: For those running business overdrafts or commercial mortgages which have, typically, higher interest rates, look again at the possibility of shifting all or some of this debt into your domestic mortgage where the rate could be considerably less. 
+            </p>
+          <p> 3: With Business Expansion Schemes which offer assured exits and projected returns in the region of 14pc, it seems almost crazy not to take a five year fixed loan at under eight per cent to finance the investment. 
+            </p>
+          <p> 4: The many Northern Ireland people who have foreign loans on foreign properties – Algarve, Dordogne, Donegal, et al – consider now bringing these loans back into the UK secured against your main UK property – if your income is sterling based your debts should also be sterling based. 
+            </p>
+          <p> Here are some important points to consider when rescheduling debt: 
+            </p>
+          <p> 1: Be fully aware of the costs of changing your mortgage. There will almost always be a survey fee and some legal fees. 
+            </p>
+          <p> Obtain a realistic estimate in advance so that you will know what you are in for and therefore be able to calculate the relative merits of changing. 
+            </p>
+          <p> 2: Many loans, particularly fixed rate loans, carry an arrangement fee. Typically, this arrangement fee is not refundable – so if you change your mind about the whole affair or decide upon a different lender you will almost always lose the fee. 
+            </p>
+          <p> 3: With repossessions and negative equity (more a feature in Great Britain than in Northern Ireland), lenders are taking a much more conservative view on valuations – the forced sale value of your property may be considerably less than the value you might have hoped for. 
+            </p>
+          <p> 4: Once your borrowings exceed 75pc if the value of the property, you will probably have to bear the additional cost of a mortgage guarantee policy. 
+            </p>
+          <head> Premiums </head>
+          <p> Premiums vary enormously from lender to lender – adding this to the arrangement fee, survey fee and the legal costs can all mount up to a tidy sum. 
+            </p>
+          <p> 5: Many loans are conditional upon other services or products being bought from the lending institution – watch out for conditional current accounts, property insurance, contents insurance and endowment policies. 
+            </p>
+          <p> A good independent financial advisor should be able to present you with an accurate cost benefit analysis of changing your mortgage. 
+            </p>
+          <p> If in changing the mortgage you are not transacting additional financial services business, such as new endowments or pensions, then you must expect the costs to be increased still further by your adviser 's fee. 
+            </p>
+          <p> It seems clear that there might be another interest rate cut in the short term (Germans permitting) – it could be a last opportunity to lock in at these levels. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/049.00000</textSigle>
+            <title>Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maol Muire Tynan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-12$A">
+          <head>
+            <hi rend="bold"> FF left in the doldrums as other parties discuss rainbow coalition </hi>
+            <hi rend="bold"> By Maol Muire Tynan, Political Reporter </hi>
+          </head>
+          <p> DISCUSSIONS on the formation of a rainbow coalition are well under way between the leaders of all the politcal parties in Leinster House except Fianna Fail, with a view to establishing an alternative administration within days. 
+            </p>
+          <p> It has emerged that the issue of a rotating Taoiseach will not be a major sticking point with the Labour leadership. Fine Gael insistence that Mr John Bruton should take up the position in a new government will not prevent Mr Dick Spring agreeing to join a rainbow coalition. 
+            </p>
+          <p> Mr Bruton said last night he believed that a new government could be formed <quote> "within days" </quote> as a political vacuum had prevailed since the Cork by-elections last month and there were pressing political issues at stake. 
+            </p>
+          <p> Much groundwork had already been done by the different parties in terms of their requirements in an alternative administration, he said, but he declined to speculate on whether the rainbow coalition was likely to consist of a three- or four-party alliance. 
+            </p>
+          <p> In order to advance the talks rapidly, a second round of contacts between the party leaders took place last night. 
+            </p>
+          <p> Before the start of the special Dail statements on the Brendan Smyth controversy, Mr Bruton had a 45-minute meeting with Mr Spring in his offices and also held discussions with the leader of the Progressive Democrats, Ms Mary Harney, and the leader of Democratic Left, Mr Proinsias de Rossa. 
+            </p>
+          <p> Separate talks on the formation of an alliance also took place between Mr Spring and the leaders of the smaller parties yesterday afternoon, and position papers have already been exchanged between some of the parties. 
+            </p>
+          <p> According to some Labour sources, Mr Spring is <quote> "anxious not to exclude anyone at this stage" </quote> , and it is understood he believes that a coalition can be crafted within a very short period. The renegotiated programme for government that Labour had almost concluded with Fianna Fail will form the basis of its talks with the rainbow parties. 
+            </p>
+          <p> Indicating that her party was willing to play a role in attempting to form a government, Ms Harney stressed that the new coalition must be <quote> "credible, durable and effective" </quote> . Sources in the party said last night that policy considerations would dictate whether the Progressive Democrats could participate in a coalition. 
+            </p>
+          <p> Warning that his party would not be <quote> "bounced" </quote> into a coalition, Mr Pat Rabbitte of Democratic Left said the issues had to be carefully considered. Politicians in Leinster House said they believed the new administration would ultimately consist of a three-party government since such an arrangement provided more Cabinet seats for each party and meant fewer complications in policy implementation. 
+            </p>
+          <p> It is understood that Labour would prefer to see Democratic Left accompany it in a new alliance, and while Fine Gael would favour the PDs it would also find Democratic Left acceptable. 
+            </p>
+          <p> In the carve-up of Cabinet seats, both the Progressive Democrats and Democratic Left would fight for two seats.
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/049.00001</textSigle>
+            <title>Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maol Muire Tynan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-012$B">
+          <head>
+            <hi rend="bold"> At times it was like a show trial </hi>
+                By Joe Carroll </head>
+          <p> THE Fianna Fail faces told it all. The once sleek, confident Ministers slumped in their seats. The backbenchers seemed dazed as Albert and Bertie gave at times weird versions of who said what to whom and when.
+            </p>
+          <p> The new Attorney General whose researchers are turning over forgetful Ministers and officials with clinical efficiency, was not in the chamber. But his version of what he found on the famous Monday, when Albert and his Ministers put together the speech which never mentioned the Duggan case and brought down the Government, is amazing. 
+            </p>
+          <p> Pat Rabbitte interjected that it sounded like a <quote> "psychiatric report" </quote> .
+            </p>
+          <p> As the AG put it, the Fianna Fail Ministers that day <quote> "were behaving in a very disorganised manner. No-one appeared to be in charge…Ministers came in and out at will. The confession was added to by the manifest tiredness of all concerned. I am informed that this was due to long hours without sleep."</quote>
+          </p>
+          <p> The following night they were at it again in the small hours drafting Albert 's gut-Harry-Whelehan speech. The AG was summoned from his bed at 3 a.m. The sight he saw at that time he passes over in merciful silence.
+            </p>
+          <p> Albert seemed offended that it was reported that the AG <quote> "paid a private visit to my apartment in Ballsbridge to apprise me of the Duggan case. I wish to state categorically that the Attorney General never set foot in my apartment." </quote> One wonders if he ever will. 
+            </p>
+          <p> One after the other Fianna Fail Ministers stood up to account for their movements on the famous Monday. Michael Woods had the best alibi, although he did at one stage actually see the AG at the <quote> "loose, ad-hoc meeting" </quote> .
+            </p>
+          <p> Bertie had to sit beside Albert when he gave the fatal speech and hand over <quote> "appropriate replies" </quote> , but <quote> "it was not my function to read them or analyse them. Just hand them over" </quote> . 
+            </p>
+          <p> It was not a pretty sight to see these once self-assured Ministers acting at times as if they were the already-doomed victims at a Stalinist show trial, while their contemptuous accusers toyed with and taunted them. 
+            </p>
+          <p> Even Dick Spring, the Grand Inquisitor, was sorry for them. <quote> "We all make mistakes and none of us are more than human" </quote> but <quote> "it is time for those involved to step aside" </quote> , he said chillingly. It was an eerie echo of the invitation of a former Taoiseach, Charles Haughey, to some other victims of circumstances to <quote> "stand aside"</quote> .
+            </p>
+          <p> Dick regretted <quote> "this sad end to what I believe was a potentially exciting development in Irish politics" </quote> . But he could not <quote> "proceed with negotiations with Fianna Fail in good faith" </quote> after the <hi rend="italic"> Irish Times </hi> report was seen to be <quote> "essentially true" </quote> .
+            </p>
+          <p> Today there will be further interrogations of the luckless Ministers before a Dail committee. But Dick has seen to it that they are yesterday 's men.
+            </p>
+          <p> Bertie, the man who would be Taoiseach, sadly listed all the <quote> "mistakes" </quote> Fianna Fail had made over Harry Whelehan and the sequel to his appointment. <quote> "We have paid the price for those mistakes…but our conscience is clear." </quote> Now they will <quote> "willingly accept the people 's verdict" </quote> . But it is Dick 's verdict which counts. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/049.00002</textSigle>
+            <title>Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maol Muire Tynan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-012$C">
+          <head>
+            <hi rend="bold"> Cover-up by senior FF Ministers, says Harney </hi>
+          </head>
+          <p> THERE was a cover-up by senior Fianna Fail Ministers, the leader of the Progressive Democrats, Ms Mary Harney told the House. Whichever Minister was <sic> resonsible </sic>
+            <corr> responsible </corr> for the handwritten note attached to the supplementary reply on the Duggan case <quote> "knew exactly its significance" </quote> , she said.
+            </p>
+          <p>
+            <quote> "They were anxious that the Taoiseach should not deviate because they knew that an unscripted Albert Reynolds would let them all down" </quote> . Quoting the handwritten note – <quote> "If pressed on this question keep repeating the above" </quote> – Ms Harney said she had repeatedly asked who was the Minister who had written it. It was <quote> "a laugh" </quote> that Fianna Fail, which had done so much to discredit the judiciary, was proposing to appoint a judge to inquire into its own behaviour. 
+            </p>
+          <p> She said that other questions had not been answered. Why had the Attorney General, Mr Eoghan Fitzsimons, felt obliged in his letter to the Taoiseach on November 15th to say that the reply was the best he could do but that it did not answer the question? 
+            </p>
+          <p>
+            <quote> "I have to laugh,"</quote> Ms Harney continued, <quote> "when I heard the new Fianna Fail leader talk about openness, transparency and accountability" </quote> .
+            </p>
+          <p> She said that of course the party would want a judge to look at their behaviour, because they would be in government before the outcome would be known, and if there was a general election, the matter would be sub judice.
+            </p>
+          <p> The Fianna Fail leader, Mr Bertie Ahern, interrupted: <quote> "That is incorrect." </quote> Ms Harney: <quote> "If so, why do you want a judge?" </quote> Mr Ahern: <quote> "Because I 'd rather a judge than you." </quote>
+          </p>
+          <p> Ms Harney asked if the acting Minister for Social Welfare, Dr Woods, had gone to the homes of Mr Fitzsimons. She pointed out that if the Government had told the truth in the Dail on November 14th-15th, and said that Mr Whelehan had been asked to <quote> "consider his position" </quote> , then Mr Whelehan 's swearing in as President of the High Court would have been postponed and would have lapsed after 10 days.
+            </p>
+          <p> She said Official A in the Attorney General 's Office was supposed to take the blame, that he did not understand paedophilia, that he was too busy with other things. 
+            </p>
+          <p> She was delighted, even <quote> "at this 11th hour"</quote> , that the house was beginning to get answers. <quote> "I don't believe we have got the whole truth." </quote> She said, it was a poor reflection on parliamentary democracy that the truth was coming out because of a leak to a journalist. It was only then that Labour pulled back. But she added that information had come out only because the Labour Party took the position it did.
+            </p>
+          <p> The only place for Fianna Fail was in opposition, she said. There were alternatives, and a new administration had to be the first one. It had to be truly frank and open. She said the truth had not come out about the Masri passport affair. There had been the beef tribunal, and the tax amnesty. So a lack of openness and transparency was not just something that had happened in the past three weeks. 
+            </p>
+          <p> Ms Harney pointed out that everybody had to play their part in the task of putting a truly open and viable government in place. That was important. If that could not be done then <quote> "we should not be afraid to consult the people" </quote> .
+            </p>
+          <p> She said there was a tendency in Fianna Fail that <quote> "you must cover things up and the worst thing of all is being caught" </quote> . She advised the 650,000 decent and honourable people who voted for Fianna Fail in the last election to be more discerning. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/049.00003</textSigle>
+            <title>Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maol Muire Tynan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-012$D">
+          <head>
+            <quote>
+              <hi rend="underline">'Every judicial move I make is interpreted as being against somebody' </hi>
+            </quote>
+          </head>
+          <head>
+            <hi rend="bold"> Italy 's white-knight magistrate resigns </hi>
+          </head>
+          <head>
+            <hi rend="bold"> ITALY </hi>
+          </head>
+          <head> Paddy Agnew, Rome </head>
+          <p> Mr Antonio Di Pietro, the magistrate who has become Italy 's best-known corruption investigator, resigned yesterday, prompting a probable political storm. 
+            </p>
+          <p> Mr Di Pietro has been a key figure in the celebrated, nearly three-year Tangentopoli inquiry that brought down Italy 's corrupt Christian Democrat and Socialist old guard. 
+            </p>
+          <p> In a letter to his superior, Milan 's chief prosecutor, Mr Francesco Severio Borelli, Mr Di Pietro said he hoped his resignation would <quote> "depersonalise" </quote> the Milan-based Tangentopoli enquiry, adding that he was tired of <quote> "being used" </quote> by many different shades of political opinion.
+            </p>
+          <p> The letter went on: <quote> "Every judicial move I have made has been interpreted as being against somebody or something … For that reason, in a spirit of service and with death in my heart, I am leaving the judiciary." </quote>
+          </p>
+          <p> Mr Di Pietro 's resignation is the most obvious manifestation yet of tensions between he Tangentopoli pool and the right-wing government of the prime Minister, Mr Silvio Berlusconi. 
+            </p>
+          <p> Last July the government was forced to drop proposals banning the use of preventive detention, a key element in the investigative methods of Mr Di Pietro and his colleagues, when its proposed emergency legislation prompted widespread public protests. 
+            </p>
+          <p> At the time, opposition forces suspected Mr Berlusconi of wishing to block the Tangentopoli investigation into his own <amp> dollar sign </amp> 7 billion Fininvest company. Indeed shortly after the failed government decree, Mr Berlusconi 's Fininvest employee, Mr Salvatore Sciascia, were arrested, charged with paying bribes to tax inspectors.
+            </p>
+          <p> Two weeks ago Mr Berlusconi himself was notified that he was under investigation on possible corruption and bribery charges. 
+            </p>
+          <p> In the meantime, however, the government is fighting back at the magistrates, by sending in judicial inspectors to assess their work, and with a Supreme Court decision last week which moved the section of the Tangentopoli inquiry relative to Mr Berlusconi away from the Milan magistrates and awarded it to their colleagues in nearby Brescia.
+            </p>
+          <p> Mr Borelli said last night that the Milan pool would continue its investigative work, despite Judge Di Pietro 's resignation. But the fact that a man who had become a symbol of reform found himself forced to resign was a point underlined by the industrialist, Mr Carlo De Benedetti, one of many public figures to regret Mr Di Pietro 's resignation. He said: <quote> "If Di Pietro is to resign like this, then we 've lost one of the key figures in the Italian revolution…a man who was a symbol for all Italians. His resignation could have very negative consequences for Italy 's image."</quote>
+          </p>
+          <p> The opposition leader, Mr Massimo D'Alema, secretary of the Democratic Left (PDS), blamed the government. <quote> "This resignation is proof that apart from proving a failure in its social and economic policies, this government is involved in creating a climate of restoration of the old corrupt system,"</quote> he said.
+            </p>
+          <p> Mr Di Pietro was hard at work in Milan yesterday, concluding the state 's case in the Enimont trial, Italy 's <quote> "mother of all corruption cases" </quote> . Twenty-four defendants, including the former Prime Minister and Socialist leader, Mr Bettino Craxi, and the present Northern League leader, Mr Umberto Bossi, are accused of having accepted illegal payments into party offers by the Montedison chemical group.
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/050.00000</textSigle>
+            <title>Tipperary Star</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Anne O'Grady</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-020$A">
+          <head>
+            <hi rend="bold"> Major Jobs Boost for Thurles </hi>
+          </head>
+          <p>
+            <hi rend="bold"> THE town of Thurles received a major jobs boost yesterday, Tuesday, with the announcement that the Government has approved the making of a research and development grant of <amp> pound sign </amp> 575,000 to Erin Foods Manufacturing Ltd. </hi>
+          </p>
+          <hi rend="bold"> By Anne O'Grady </hi>
+          <p> The announcement was made by the Minister for Environment and Education, Mr Michael Smith, T.D., who stated that full implementation of the global investment package will result in the creation of 134 new jobs over the period 1993-1997. Over thirty-one of these jobs are already in place. 
+            </p>
+          <p> Minister Smith expressed his delight that the Government were supporting this <quote> "thriving indigenous industry" </quote> in Thurles and he congratulated the management and workforce who had contributed enormously to this significant development. 
+            </p>
+          <p> The news has also been welcomed by the former Minister for Agriculture, Senator Michael O'Kennedy who said he was happy that Thurles was enhancing its standing as the centre of the added value area in the food processing sector. 
+            </p>
+          <p> The grant, which is being made available through Shannon Development, will go towards meeting the cost of an eligible research and development programme. Minister Smith stated that an integral part of Erin Foods; development strategy was the implementation of a major research and development programme and a detailed product development programme had been prepared and was being implemented in two phases. 
+            </p>
+          <p> Mr Smith said that, in addition, a number of facilities in the form of capital aid for which Government approval was not required were being made available by Shannon Development to Erin Foods. These included a new industry grant of <amp> pound sign </amp> 132,000 towards the cost of eligible building works, a new industry grant of <amp> pound sign </amp> 414,960 towards the cost of eligible plant and machinery and an equity subscription of <amp> pound sign </amp> 500,000 (ordinary shares) in Greencore Plc. 
+            </p>
+          <p> He added that the project had the backing of the National Food Centre and he confirmed that Greencore Plc were a party to the agreement. 
+            </p>
+          <p> Mr Smith said the company 's drive in recent years for higher quality, added value products and the major successes which it had received on the export market had been instrumental in achieving this progress. 
+            </p>
+          <p>
+            <quote> "It is worthwhile to note that as recently as four years ago the company was only exporting seven or eight percent of its produce and now, in an increasingly competitive market, their export achievement has reached 33 <amp> per cent sign </amp> of produce. In the teeth of international competition they have gained a significant foothold with prestigious UK companies. Needless to say, the boost in jobs is a very welcome development for Thurles. The knock-on effect of this level of investment for the town is going to be substantial and the people of Thurles can look forward to a period of further growth and prosperity in the years ahead", </quote> he added. 
+            </p>
+          <p> Meanwhile, Sentator O'Kennedy described the development as very major and said it was part of the culmination of the research and development which they had been promoting. The new development, he said, would deal with nutritionally balanced meals and recipe formations and would take Erin Foods into an entire new market niche. It was the latest in high technology and represented a very substantial investment of over <amp> pound sign </amp> 1 million at this point.
+            </p>
+          <p>
+            <quote> "It is all very positive in that it represents a diversification into the value added area in the food processing sector which I was always very anxious to see promoted there and I very much welcome the culmination of this effort. It was always said under the Sugar Company that they would commit themselves to ongoing development there and I am glad to see it being brought to fruition", </quote> he said. 
+            </p>
+          <p> Saying it was a very exciting development, he complimented the management and staff and said the whole approach to the development was very positive. He was very happy that Thurles was <sic> re-inforcing </sic>
+            <corr> reinforcing </corr> its reputation as the centre of the added value area in the food processing sector. 
+            </p>
+          <p> Councillor Frances Boyle, a Chamber of Commerce representative on Thurles Urban Council last night welcomed the news and congratulated all concerned. She added that Thurles could do with more such good news. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/050.00001</textSigle>
+            <title>Tipperary Star</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Anne O'Grady</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-020$B">
+          <head>
+            <hi rend="bold"> Gardai alert after Cashel raid </hi>
+          </head>
+          <hi rend="bold"> By John Guiton </hi>
+          <p> A TRAVELLING gang operating in the Munster region is thought to be responsible for a number of break-ins to filling stations, their latest target being the Esso station at Cahir Road, Cashel, in the early hours of Monday morning last. The thieves got away with <sic> approximagely </sic>
+            <corr> approximately </corr>
+            <amp> pound sign </amp> 1,000 in cash. 
+            </p>
+          <p> Gardai are carrying out extensive investigations into the incident that occurred at the Esso station and shop, which is located on the outskirts of the town. The gang used cutting equipment to gain access to the premises through the roof and then made their getaway with the substantial amount of money. 
+            </p>
+          <p> The robbery was carried out with clinical precision and Gardai believe that a number of people were involved in the incident. It is the latest in a series of break-ins to filling stations in the Tipperary-Cork area and Gardai believe that it could well be the work of the same gang who raided stations in Fermoy and Tipperary recently. 
+            </p>
+          <p> A Garda spokesman said that every effort is being made to try and apprehend those responsible for the robberies, but he urged owners of filling stations and business premises to be extra vigilant, especially in the run-up to Christmas. The Cashel premises was unoccupied at the time of the break-in. 
+            </p>
+          <p> The Garda spokesman said that it is obvious that the gang use heavy equipment to break into premises and he called on the public to report any kind of suspicious sightings without delay. 
+            </p>
+          <p> Gardai in Cashel investigating Monday morning 's incident are anxious to hear from anybody who passed by the filling station in the early hours of the morning and may have seen anybody behaving in a suspicious manner. 
+            </p>
+          <p> The Gardai are also interested to hear from anybody who may have seen a <sic> vahicle </sic> , <corr> vehicle </corr> or vehicles, parked in a suspicious manner in the town or on <sic> it 's </sic>
+            <corr> its </corr> outskirts. 
+            </p>
+          <p> All information will be treated in the strictest confidence. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/050.00002</textSigle>
+            <title>Tipperary Star</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Anne O'Grady</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-020$C">
+          <head>
+            <hi rend="bold"> Wife in fear of husband </hi>
+          </head>
+          <p> A MAN who visited his wife 's premises and allegedly put her <quote> "in fear" </quote> was handed out two prison sentences of six months each, but Judge Mary Martin, at Templemore court, when she convicted him of contravening two protection orders. 
+            </p>
+          <p> Massimo Conte, 89, Pinewood Gardens, Moyross, Limerick, pleaded not guilty to a charge that on December 2nd at Patrick Street, Templemore, he did contravene a protection order made at Portlaoise District Court on that day in that he did put Marina Conte in fear at her premises. He was sentenced to six months imprisonment. 
+            </p>
+          <p> He also pleaded not guilty to a charge that on October 28th., 1994, he contravened a protection order made at Roscrea District Court on 27th October 1994, in that he did put Marina Conte in fear at her premises in Patrick Street. He was also sentenced to six months imprisonment on that charge. 
+            </p>
+          <p> Garda John O'Connor Templemore, said that on December 2nd at 8.05 p.m. he received a call to go to Marina 's cafe in Templemore. He was asked to go into the sitting-room of the house by Marina Conte. She informed witness that her husband Massimo Conte was on the premises and that she wanted him removed. She stated that she had a protection order against him. Witness informed defendant that he was not supposed to be on the premises. Defendant tried to put up a case and he (witness) arrested him and conveyed him to the Garda station. Later he left the station on the grounds that he would not go near the cafe. 
+            </p>
+          <p> In reply to Mr. James Meagher Solr. For defendant, witness said that Marina Conte told him that she was <quote> "in fear" </quote> of her husband. He had informed defendant of that. Defendant felt that he was entitled to be at her premises if he was not harming her. Defendant 's wife had telephoned him before that and told him she did not want him there. Defendant must have got into the premises by a side door. 
+            </p>
+          <p> Mr. Meagher - <quote> There was no act of violence committed. </quote>
+          </p>
+          <p> Witness - <quote> No, but she was in fear. </quote>
+          </p>
+          <p> Garda Costello, Templemore said that she accompanied Garda O'Connor to the premises. Marina Conte made a statement. She (Marina Conte) was in fear. 
+            </p>
+          <p>
+            <sic> Sargent </sic>
+            <corr> Sergeant </corr> Martin, Templemore told the Court of investigating a complaint made on September 28th. He spoke to Marina Conte and she was in a frightened and upset state. He took a statement from her. She said that her husband (defendant) had pushed her on the premises and told her that he could treat her like a dog. He also arrested defendant in relation to October 28 incident when defendant again visited his wife 's premises. 
+            </p>
+          <p> Garda Dwyer, Templemore also told the court that she took a statement from Marina Conte. 
+            </p>
+          <p> Massimo Conte said that not everything said was true. <quote> "I never touched my wife and she can say that," </quote> he said. He said that he had never been brought into Court before for <quote> "beating nobody". </quote> He never he said assaulted his wife. 
+            </p>
+          <p> Supt. Mulryan for the prosecution, <quote> are you saying that the evidence given here today by Gardai is cock and bull. </quote>
+          </p>
+          <p> Defendant: <quote> Near enough. </quote>
+          </p>
+          <p> Judge Martin issued a stern warning to defendant that he was never again to go near his wife or his wife 's premises. <quote> "You are getting terms of imprisonment now but you will go to jail again if you go near her in the future". </quote> she said.
+            </p>
+          <p> Recognisances were fixed in the event of an appeal.
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/050.00003</textSigle>
+            <title>Tipperary Star</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Anne O'Grady</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-020$D">
+          <head>
+            <hi rend="bold"> Survey points way to rural survival</hi>
+          </head>
+          <p>
+            <hi rend="bold"> THERE could not have been a better location in which to launch a Muintir na Tire report on rural Tipperary communities than the breathtakingly beautiful but stark landscape of the Glen of Aherlow. </hi>
+          </p>
+          <hi rend="bold"> By Mary Hassett </hi>
+          <p> Guests at last Monday 's launch looked out from the plush surrounds of the Aherlow House Hotel to the magnificent hills and reflected on the people who are struggling to make a life for themselves in similarly rugged and isolated surroundings throughout North and South Tipperary. 
+            </p>
+          <p> Some people may have imagined that Muintir na Tire was dead in all but name but the organisation founded in 1937 is determined to prove that it is as relevant today as on the date of its foundation. The organisation founded by Tipperary priest Canon John Hayes has always sought to respond to the needs of communities and parishes and to be forthright and innovative in its approach. 
+            </p>
+          <head>
+            <hi rend="bold"> FOUR PARISHES </hi>
+          </head>
+          <p> Perceiving the growing need to develop new strategies for creating employment which would both support and complement local development objectives Muintir na Tire commissioned a preliminary study of four communities/parishes throughout North and South Tipperary. The parishes involved were Templederry and Moyne-Templetuohy an North Tipperary and Fethard and Cappawhite in South Tipperary. The study was carried out on behalf of Muintir na Tire by Murphy, Ryan <amp> ampersand </amp> Associates Ltd., Management and Human Resources Consultants in Limerick. The study was funded in part by Tipperary Leader Group Ltd. 
+            </p>
+          <p> The focus of the study was to examine the potential of each community to create an enterprise environment which would contribute to employment opportunities at local level. 
+            </p>
+          <p> The outcome of the study quite clearly indicated that while potential exists to a degree within each community ongoing and focussed community development will be required in order to achieve the enterprise ambition. It is proposed that the optimum enterprise environment will include a working partnership arrangement between the community, local authority and all statutory / voluntary agencies relevant to each community. 
+            </p>
+          <p> Careful community planning will be required in order to ensure that wherever possible all sectors of the community will be represented or given the opportunity to participate in all decision making and development. 
+            </p>
+          <head>
+            <hi rend="bold"> DECLINING POPULATION </hi>
+          </head>
+          <p> The study showed that Cappawhite, Templederry and Moyne-Templetuohy all have a declining population. The most alarming decline has taken place in Templederry which now has a population of 1116 which is 25 <amp> per cent sign </amp> of what it was in 1901. The population has decreased by 6 <amp> per cent sign </amp> between 1986 and 1991. 
+            </p>
+          <p> The population in Moyne-Templetuohy has declined by 7 <amp> per cent sign </amp> between 1986 and 1991 while the decrease has been more than 10 <amp> per cent sign </amp> in Cappawhite over a similar period. In contrast the population in Fethard increased by 11 <amp> per cent sign </amp> between 1981 and 1986 with a further slight increase between 1986 and 1994. 
+            </p>
+          <p> The study shows that 50 <amp> per cent sign </amp> of the population in all four parishes is dependant i.e. is under eighteen or over sixty-five. Unemployment appears to be low as people in all four parishes have left the area rather than remain unemployed. A significant percentage of the workforce are employed outside the parishes on either a long or short term basis. 
+            </p>
+          <p> The report concluded that community activity and involvement exists within each of the four parishes. However this is at different levels of development. Potential exists for further development including the introduction of enterprise for the purpose of offering job opportunities to young people as an alternative to leaving the parish to achieve employment. The development of the tourism industry is possible in each of the four parishes. This will require care, planning, coordination, direction and participation. 
+            </p>
+          <head>
+            <hi rend="bold"> COMMUNITY PLAN </hi>
+          </head>
+          <p> It is proposed that a Community Plan be developed within each area which would address the issue of integration and enterprise. It is felt that a representative umbrella organisation should be introduced or strengthened in each area. 
+            </p>
+          <p> Speaking at the launch the President of Muintir na Tire, Jim Quigley called on the incoming Government to give Muintir na Tire the necessary financial resources to employ Development officers on a national basis. <quote> 'Rural society must be preserved, stabilised and developed so as to avoid a social and economic imbalance between rural and urban', </quote> stated the Toomevara born President who has been living in Dublin for more than 30 years. <quote> 'The study we are launching today is, in our opinion, a way of preserving one area of rural society within EU and national policies', </quote> he stated. 
+            </p>
+          <p> Ms. Wendy Ryan, Murphy, Ryan <amp> ampersand </amp> Associates Ltd., highlighted the energy, dedication and enthusiasm of local people in all four communities. She formally presented a copy of the report to Jim Quigley. 
+            </p>
+          <p> Former MEP and champion of rural Ireland over a lifetime Mr T. J. Maher officially launched the report. He highlighted the fact that Canon Hayes had promoted a philosophy of self help which will have to remain to the forefront if rural Ireland is to survive and prosper. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/051.00000</textSigle>
+            <title>City Tribune</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Declan Tierney</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-018$A">
+          <head>
+            <hi rend="bold"> Theatre: <quote> 'We don't have the money' </quote> reveal Corpo </hi>
+          </head>
+          <head>
+            <hi rend="underline"> BY DECLAN TIERNEY </hi>
+          </head>
+          <p> The delay in proceeding with the construction of a theatre for Galway city is down to the fact that Galway Corporation do not have the funding needed to allow the project go to tender. 
+            </p>
+          <p> Earlier this week Minister for the Arts, Culture and the Gaeltacht, Michael D. Higgins slammed the corporation for what he described as their lethargic attitude towards providing a theatre – for which <amp> pound sign </amp> 1.5 million has been sanctioned by his Department. 
+            </p>
+          <p> But Acting City and County Manager, Joe Gavin said that for the project to go ahead, the local authority had to raise <amp> pound sign </amp> 750,000 – that being the difference of what the cost of a theatre would be and the grant allocation from the Government. 
+            </p>
+          <p>
+            <quote> "This is money we do not have and until we have these funds available to us, we cannot go ahead with the theatre". </quote> said Mr. Gavin, who added that the appointment of a fund-raiser would be made next month. 
+            </p>
+          <p> Once Government sanction was received by the Corporation last year, it was decided to set up a trust with a view to raising the balance so that the project could go ahead. 
+            </p>
+          <p> Mr. Gavin explained that the Corporation got an architect to give an estimated cost of providing a theatre and this worked out at <amp> pound sign </amp> 3 million – as this would be out of the reach of the local authority, they asked that the design be <quote> "pruned down". </quote>
+          </p>
+          <p> The architect then came up with a plan that would cost <amp> pound sign </amp> 2.25 million which eliminated a number of aspects to the original design like rehearsal space, a number of offices and also affected the type of finish to the building. 
+            </p>
+          <p>
+            <quote> "All this took time and now the Corporation, in co-operation with members of the trust, will be meeting to discuss ways of raising the money required to begin the project. Interviews will also be held for the purpose of appointing a fund-raiser," </quote> Mr. Gavin added. 
+            </p>
+          <p> Minister Higgins warned that if the grant allocation was not taken up this year, it would have to be justified all over again when the Government plans its budget for next year – with the possibility that it might not be approved. 
+            </p>
+          <p> Mr. Gavin, however, stressed the Corporation 's goodwill towards the project and their anxiety to be in a position to give the go-ahead. <quote> "At the moment we are not in a position to build a theatre", </quote> he said. 
+            </p>
+          <p>
+            <quote> "Galway Corporation is very supportive of the arts and we are endeavouring to ensure that a theatre is provided in the city. We are now taking the next step as we would like to see the theatre put in place", </quote> Mr. Gavin added. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/051.00001</textSigle>
+            <title>City Tribune</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Declan Tierney</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-018$B">
+          <head>
+            <hi rend="bold"> Ballybrit defies the odds with <amp> pound sign </amp> 1.5m. a day gambling spree </hi>
+          </head>
+          <head>
+            <hi rend="underline"> BY Ciaran Tierney </hi>
+          </head>
+          <p>
+            <hi rend="bold"> Any talk of recession has been banished from the Ballybrit area this week as huge crowds once again flocked to the annual Galway Races . . . with <amp> pound sign </amp> 1.5million a day being wagered on the course. </hi>
+          </p>
+          <p>
+            <hi rend="italic"> With the usual gaggle of celebrities, politicians, serious punters, and tricksters, rubbing shoulders with ordinary racing enthusiasts, the annual festival retained its unique atmosphere, with the fine weather of the past two afternoons ensuring bumper crowds again at the race course. </hi>
+          </p>
+          <p> Aggregate Tote figures have been down each day on last year 's record figures, but it 's been a very successful race meeting with huge sums of money changing hands on the course over the four days so far. 
+            </p>
+          <p> Indeed, the Galway Races have proved once again that they are virtually recession-proof by managing to attract big crowds once again despite a summer which has seen a significant slump in the number of Irish tourists visiting the West on short breaks, due to the poor weather experienced since May. 
+            </p>
+          <p> The crowds were down a little on previous years for Wednesday 's Galway Plate but, whether it was the Guinness Hurdle or Ladies Day that attracted them, punters certainly thronged the course yesterday. 
+            </p>
+          <p> Tote figures for both of the main days, Wednesday and Thursday, have been down considerably on last year – but those in the know have discounted this as a significant trend as bookmakers on the site pulled in over <amp> pound sign </amp> 1 million in bets on both days. 
+            </p>
+          <p> Wednesday 's Tote aggregate was <amp> pound sign </amp> 441,465, down almost <amp> pound sign </amp> 42,000 on 1992, while yesterday 's aggregate rose to <amp> pound sign </amp> 489,233, which was down <amp> pound sign </amp> 64,672 on last year. But with the bookies estimated to have handled approximately two and a half times the amount gambled with the Tote there was no shortage of money in circulation. 
+            </p>
+          <p> Racecourse manager John Moloney said this morning that he was very happy with the week 's returns so far – and he underplayed the decreases in the Tote aggregates by pointing out that last year 's record figures were due to the fact that the Tote jackpots were carried over from day to day. 
+            </p>
+          <p>
+            <quote> "We have been very lucky with the weather and Wednesday and Thursday were two wonderful days here," </quote> he said. <quote> "The crowds have held up this year, even though Monday was wet and Tuesday windy. And I would discount the decreases in the Tote, as there was a huge carry-over last year, while the bookmakers on the site have taken in over <amp> pound sign </amp> 1m both on Wednesday and yesterday (Thursday)." </quote>
+          </p>
+          <p> Some pundits joked that a full Cabinet meeting could have been held in the vicinity of Ballybrit earlier this week as there were so many Government Ministers in attendance, including An Taoiseach, Albert Reynolds, the Minister for Finance, Bertie Ahern, and Galway 's Minister for justice, Maire Geoghegan Quinn. 
+            </p>
+          <p> Other well-known personalities to grace Ballybrit with their presence this week included Paul Hill of the Guildford Four and his American wife, Courtney Kennedy; former Miss Ireland Michelle Rocca; and Alan Sugar, the man who owns top English soccer team Tottenham Hotspur, who made the headlines in the Spring when he sacked popular club manager Terry Venables.
+            </p>
+          <p> The pattern at Ballybrit, where the crowds are holding up even if there seems to be less cash flowing around, mirrors the pattern for tourism in the West of Ireland this summer. 
+            </p>
+          <p> According to Regional Tourism Manager Brian Flynn the tourism market has held up pretty well even if there are decreases in some sectors, with the bad weather of the past few months in particular to blame for the slump in the number of Irish tourists visiting the region. 
+            </p>
+          <p>
+            <quote> "It is very hard to judge crowds of people and whether they vary or not from year to year," </quote> he said yesterday. <quote> "But our business here is certainly as busy as last year. From the races we are getting a feedback that people are more cautious with their money this year and the spending sprees don't seem to be there, even if the numbers have held up this year." </quote>
+          </p>
+          <p> He said that the numbers of European and British tourists, and returning emigrants, had held up pretty well or even increased this year, but there was a marked decline in the number of visitors from the home market – with the weather a factor in the reluctance of Irish people to take holidays at home this year. 
+            </p>
+          <p> Mr. Flynn pointed out that there was a phenomenal growth in tourism between 1988 and last year, and Ireland West Tourism expected to record a modest growth this year. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/051.00002</textSigle>
+            <title>City Tribune</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Declan Tierney</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-018$C">
+          <head>
+            <hi rend="bold"> Galway's Rowing Glory! </hi>
+          </head>
+          <p>
+            <hi rend="bold"> TEAMS and players who enjoy major success on a regular basis would appear to have it all, but one thing they can never appreciate is the sheer euphoria attached to a club winning something which they have strived for decades to achieve. </hi>
+          </p>
+          <p>
+            <hi rend="italic"> It was apparent when the Republic of Ireland qualified for the World Cup, when Galway hurlers won the All-Ireland in 1980 and when Galway United won the FAI Cup two years ago. </hi>
+          </p>
+          <p> The ecstasy associated with such successes is one of the greatest joys in sport and so it was at the weekend when Galway Rowing Club captured the Irish Senior Championship for the first time since the club was formed in 1910. 
+            </p>
+          <p> It was an achievement which the club have been striving for over eighty years to attain and one which, apart from a close effort in 1974, was always outside their scope. 
+            </p>
+          <p> But this season was different. Five oarsmen – Luke Nolan, Tom Elwwod, Kevin Garvey, Sean Heaney and Malcolm Hosty – joined the club having tasted senior glory with UCG in 1991 with Nolan, Garvey and Hosty having also been on the victorious UCG '88 crew. 
+            </p>
+          <p> The Elite crew was completed by Adrian McCallion, Conor Moloney, Vincent Breen and cox Martin Forde. They were the nine chosen during the season after the club had initially put two eights crews on the water. 
+            </p>
+          <p> Training under the guidance of Mike Hackett and his assistant Myley McGrath began in October and from then to last weekend 's finals the crew trained over 300 times. 
+            </p>
+          <p> Over 300 training sessions for a race that lasted little over five minutes clearly puts into perspective the amount of dedication required to succeed at the highest level in Irish rowing. 
+            </p>
+          <p> The crew trained five nights a week in the gym for the first four months and took to the water twice on Saturdays and once on Sundays. 
+            </p>
+          <p> The early season training centred around weights training in the gym and long-distance running … usually about an hour a night …as well as gruelling hill running. 
+            </p>
+          <p> Towards the end of January the crew were able to take to the water for short periods in the evenings (with the help of a bicycle light on the front of the boat!) before the Head season began. 
+            </p>
+          <p> By April it was time for speed work in the water with the crew usually putting in around eight training sessions a week. 
+            </p>
+          <p>
+            <quote> "We were improving all year. We were getting faster all the time. We rowed well in Henley without winning and we went into the finals knowing we had a great chance. 
+                </quote>
+          </p>
+          <p>
+            <quote> "But while the training deserved success, you don't win unless you perform on the day. When we won it was a case of relief first before the elation took over. We have now broken the barrier," </quote> said coach Mike Hackett. 
+            </p>
+          <p> GRC went into the National Championships as favourites to win the Elite V111, a tag which was earned after several splendid regatta performances around the country all season. 
+            </p>
+          <p> But it was also apparent from the outset that this was going to be one of the most open finals in years with Neptune, Belfast, Trinity and a composite from Cork/Clonmel/Shannon all in line for the title. 
+            </p>
+          <p> The draw for the two semi-final heats threw up a dramatic selection with four of the top five crews being drawn in the same heat and only three could qualify for the final. 
+            </p>
+          <p> And what a race the heat turned out to be. GRC, stroking 47 at the start, build up a lead of a canvas after 300 metres and after levelling out at a rate of 37 just one boat length separated the four leading boats at the halfway stage. 
+            </p>
+          <p> But GRC always held the edge and were never really in danger of losing the race. In the end they had half a length lead from Neptune with just a canvas separating Belfast from composite Cork/Clonmel/Shannon boat. 
+            </p>
+          <p> That heat win gave GRC the prime station in the middle of the course for the final with Tribesmen, Trinity, Neptune, Belfast and UCD spread either side of them. 
+            </p>
+          <p> The moment of truth had arrived for Galway Rowing Club. A club which had waited over eighty years were now just over five minutes away from becoming the best in the country. 
+            </p>
+          <p> It was a challenge that was met head-on and within 100 metres it was obvious that Galway were going to win the Irish Challenge Cup. 
+            </p>
+          <p> Galway 's position in the middle of the course allowed them keep a close eye on all that was happening and with stroke Malcolm Hosty using all of his vast experience, GRC commanded the race from start to finish. 
+            </p>
+          <p> A 20 stroke spurt at 500 metres gave them a three-quarters length lead over Belfast and at the halfway stage they still maintained that lead, although Neptune had pulled level with Belfast by that stage.
+            </p>
+          <p> GRC came in with a length and a half to spare over Neptune in a very fast time of 5:35, four seconds clear of their arch Dublin rivals with Belfast a canvas behind in third place. 
+            </p>
+          <p> Their success has now seen them elevated to represent Ireland in the Home Countries championships in Strathcyde in Scotland when they will contest the final against England, Scotland and Wales. 
+            </p>
+          <p> And also on the international front, Sean Heaney has been selected to attend a two week training camp in Sweden. Six oarsmen from around the country have been selected with four of them to be picked to contest the World Championships in September. 
+            </p>
+          <p> The international selections are highly appropriate, coming at the end of the most glorious week in Galway Rowing Club 's illustrious history. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/053.00000</textSigle>
+            <title>Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maol Muire Tynan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-12$A">
+          <head>
+            <hi rend="bold"> FF left in the doldrums as other parties discuss rainbow coalition </hi>
+            <hi rend="bold"> By Maol Muire Tynan, Political Reporter </hi>
+          </head>
+          <p> DISCUSSIONS on the formation of a rainbow coalition are well under way between the leaders of all the politcal parties in Leinster House except Fianna Fail, with a view to establishing an alternative administration within days. 
+            </p>
+          <p> It has emerged that the issue of a rotating Taoiseach will not be a major sticking point with the Labour leadership. Fine Gael insistence that Mr John Bruton should take up the position in a new government will not prevent Mr Dick Spring agreeing to join a rainbow coalition. 
+            </p>
+          <p> Mr Bruton said last night he believed that a new government could be formed <quote> "within days" </quote> as a political vacuum had prevailed since the Cork by-elections last month and there were pressing political issues at stake. 
+            </p>
+          <p> Much groundwork had already been done by the different parties in terms of their requirements in an alternative administration, he said, but he declined to speculate on whether the rainbow coalition was likely to consist of a three- or four-party alliance. 
+            </p>
+          <p> In order to advance the talks rapidly, a second round of contacts between the party leaders took place last night. 
+            </p>
+          <p> Before the start of the special Dail statements on the Brendan Smyth controversy, Mr Bruton had a 45-minute meeting with Mr Spring in his offices and also held discussions with the leader of the Progressive Democrats, Ms Mary Harney, and the leader of Democratic Left, Mr Proinsias de Rossa. 
+            </p>
+          <p> Separate talks on the formation of an alliance also took place between Mr Spring and the leaders of the smaller parties yesterday afternoon, and position papers have already been exchanged between some of the parties. 
+            </p>
+          <p> According to some Labour sources, Mr Spring is <quote> "anxious not to exclude anyone at this stage" </quote> , and it is understood he believes that a coalition can be crafted within a very short period. The renegotiated programme for government that Labour had almost concluded with Fianna Fail will form the basis of its talks with the rainbow parties. 
+            </p>
+          <p> Indicating that her party was willing to play a role in attempting to form a government, Ms Harney stressed that the new coalition must be <quote> "credible, durable and effective" </quote> . Sources in the party said last night that policy considerations would dictate whether the Progressive Democrats could participate in a coalition. 
+            </p>
+          <p> Warning that his party would not be <quote> "bounced" </quote> into a coalition, Mr Pat Rabbitte of Democratic Left said the issues had to be carefully considered. Politicians in Leinster House said they believed the new administration would ultimately consist of a three-party government since such an arrangement provided more Cabinet seats for each party and meant fewer complications in policy implementation. 
+            </p>
+          <p> It is understood that Labour would prefer to see Democratic Left accompany it in a new alliance, and while Fine Gael would favour the PDs it would also find Democratic Left acceptable. 
+            </p>
+          <p> In the carve-up of Cabinet seats, both the Progressive Democrats and Democratic Left would fight for two seats.
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/053.00001</textSigle>
+            <title>Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maol Muire Tynan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-012$B">
+          <head>
+            <hi rend="bold"> At times it was like a show trial </hi>
+                By Joe Carroll </head>
+          <p> THE Fianna Fail faces told it all. The once sleek, confident Ministers slumped in their seats. The backbenchers seemed dazed as Albert and Bertie gave at times weird versions of who said what to whom and when.
+            </p>
+          <p> The new Attorney General whose researchers are turning over forgetful Ministers and officials with clinical efficiency, was not in the chamber. But his version of what he found on the famous Monday, when Albert and his Ministers put together the speech which never mentioned the Duggan case and brought down the Government, is amazing. 
+            </p>
+          <p> Pat Rabbitte interjected that it sounded like a <quote> "psychiatric report" </quote> .
+            </p>
+          <p> As the AG put it, the Fianna Fail Ministers that day <quote> "were behaving in a very disorganised manner. No-one appeared to be in charge…Ministers came in and out at will. The confession was added to by the manifest tiredness of all concerned. I am informed that this was due to long hours without sleep."</quote>
+          </p>
+          <p> The following night they were at it again in the small hours drafting Albert 's gut-Harry-Whelehan speech. The AG was summoned from his bed at 3 a.m. The sight he saw at that time he passes over in merciful silence.
+            </p>
+          <p> Albert seemed offended that it was reported that the AG <quote> "paid a private visit to my apartment in Ballsbridge to apprise me of the Duggan case. I wish to state categorically that the Attorney General never set foot in my apartment." </quote> One wonders if he ever will. 
+            </p>
+          <p> One after the other Fianna Fail Ministers stood up to account for their movements on the famous Monday. Michael Woods had the best alibi, although he did at one stage actually see the AG at the <quote> "loose, ad-hoc meeting" </quote> .
+            </p>
+          <p> Bertie had to sit beside Albert when he gave the fatal speech and hand over <quote> "appropriate replies" </quote> , but <quote> "it was not my function to read them or analyse them. Just hand them over" </quote> . 
+            </p>
+          <p> It was not a pretty sight to see these once self-assured Ministers acting at times as if they were the already-doomed victims at a Stalinist show trial, while their contemptuous accusers toyed with and taunted them. 
+            </p>
+          <p> Even Dick Spring, the Grand Inquisitor, was sorry for them. <quote> "We all make mistakes and none of us are more than human" </quote> but <quote> "it is time for those involved to step aside" </quote> , he said chillingly. It was an eerie echo of the invitation of a former Taoiseach, Charles Haughey, to some other victims of circumstances to <quote> "stand aside"</quote> .
+            </p>
+          <p> Dick regretted <quote> "this sad end to what I believe was a potentially exciting development in Irish politics" </quote> . But he could not <quote> "proceed with negotiations with Fianna Fail in good faith" </quote> after the <hi rend="italic"> Irish Times </hi> report was seen to be <quote> "essentially true" </quote> .
+            </p>
+          <p> Today there will be further interrogations of the luckless Ministers before a Dail committee. But Dick has seen to it that they are yesterday 's men.
+            </p>
+          <p> Bertie, the man who would be Taoiseach, sadly listed all the <quote> "mistakes" </quote> Fianna Fail had made over Harry Whelehan and the sequel to his appointment. <quote> "We have paid the price for those mistakes…but our conscience is clear." </quote> Now they will <quote> "willingly accept the people 's verdict" </quote> . But it is Dick 's verdict which counts. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/053.00002</textSigle>
+            <title>Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maol Muire Tynan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-012$C">
+          <head>
+            <hi rend="bold"> Cover-up by senior FF Ministers, says Harney </hi>
+          </head>
+          <p> THERE was a cover-up by senior Fianna Fail Ministers, the leader of the Progressive Democrats, Ms Mary Harney told the House. Whichever Minister was <sic> resonsible </sic>
+            <corr> responsible </corr> for the handwritten note attached to the supplementary reply on the Duggan case <quote> "knew exactly its significance" </quote> , she said.
+            </p>
+          <p>
+            <quote> "They were anxious that the Taoiseach should not deviate because they knew that an unscripted Albert Reynolds would let them all down" </quote> . Quoting the handwritten note – <quote> "If pressed on this question keep repeating the above" </quote> – Ms Harney said she had repeatedly asked who was the Minister who had written it. It was <quote> "a laugh" </quote> that Fianna Fail, which had done so much to discredit the judiciary, was proposing to appoint a judge to inquire into its own behaviour. 
+            </p>
+          <p> She said that other questions had not been answered. Why had the Attorney General, Mr Eoghan Fitzsimons, felt obliged in his letter to the Taoiseach on November 15th to say that the reply was the best he could do but that it did not answer the question? 
+            </p>
+          <p>
+            <quote> "I have to laugh,"</quote> Ms Harney continued, <quote> "when I heard the new Fianna Fail leader talk about openness, transparency and accountability" </quote> .
+            </p>
+          <p> She said that of course the party would want a judge to look at their behaviour, because they would be in government before the outcome would be known, and if there was a general election, the matter would be sub judice.
+            </p>
+          <p> The Fianna Fail leader, Mr Bertie Ahern, interrupted: <quote> "That is incorrect." </quote> Ms Harney: <quote> "If so, why do you want a judge?" </quote> Mr Ahern: <quote> "Because I 'd rather a judge than you." </quote>
+          </p>
+          <p> Ms Harney asked if the acting Minister for Social Welfare, Dr Woods, had gone to the homes of Mr Fitzsimons. She pointed out that if the Government had told the truth in the Dail on November 14th-15th, and said that Mr Whelehan had been asked to <quote> "consider his position" </quote> , then Mr Whelehan 's swearing in as President of the High Court would have been postponed and would have lapsed after 10 days.
+            </p>
+          <p> She said Official A in the Attorney General 's Office was supposed to take the blame, that he did not understand paedophilia, that he was too busy with other things. 
+            </p>
+          <p> She was delighted, even <quote> "at this 11th hour"</quote> , that the house was beginning to get answers. <quote> "I don't believe we have got the whole truth." </quote> She said, it was a poor reflection on parliamentary democracy that the truth was coming out because of a leak to a journalist. It was only then that Labour pulled back. But she added that information had come out only because the Labour Party took the position it did.
+            </p>
+          <p> The only place for Fianna Fail was in opposition, she said. There were alternatives, and a new administration had to be the first one. It had to be truly frank and open. She said the truth had not come out about the Masri passport affair. There had been the beef tribunal, and the tax amnesty. So a lack of openness and transparency was not just something that had happened in the past three weeks. 
+            </p>
+          <p> Ms Harney pointed out that everybody had to play their part in the task of putting a truly open and viable government in place. That was important. If that could not be done then <quote> "we should not be afraid to consult the people" </quote> .
+            </p>
+          <p> She said there was a tendency in Fianna Fail that <quote> "you must cover things up and the worst thing of all is being caught" </quote> . She advised the 650,000 decent and honourable people who voted for Fianna Fail in the last election to be more discerning. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/053.00003</textSigle>
+            <title>Irish Times</title>
+            <domain>PreNew</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Maol Muire Tynan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2C-012$D">
+          <head>
+            <quote>
+              <hi rend="underline">'Every judicial move I make is interpreted as being against somebody' </hi>
+            </quote>
+          </head>
+          <head>
+            <hi rend="bold"> Italy 's white-knight magistrate resigns </hi>
+          </head>
+          <head>
+            <hi rend="bold"> ITALY </hi>
+          </head>
+          <head> Paddy Agnew, Rome </head>
+          <p> Mr Antonio Di Pietro, the magistrate who has become Italy 's best-known corruption investigator, resigned yesterday, prompting a probable political storm. 
+            </p>
+          <p> Mr Di Pietro has been a key figure in the celebrated, nearly three-year Tangentopoli inquiry that brought down Italy 's corrupt Christian Democrat and Socialist old guard. 
+            </p>
+          <p> In a letter to his superior, Milan 's chief prosecutor, Mr Francesco Severio Borelli, Mr Di Pietro said he hoped his resignation would <quote> "depersonalise" </quote> the Milan-based Tangentopoli enquiry, adding that he was tired of <quote> "being used" </quote> by many different shades of political opinion.
+            </p>
+          <p> The letter went on: <quote> "Every judicial move I have made has been interpreted as being against somebody or something … For that reason, in a spirit of service and with death in my heart, I am leaving the judiciary." </quote>
+          </p>
+          <p> Mr Di Pietro 's resignation is the most obvious manifestation yet of tensions between he Tangentopoli pool and the right-wing government of the prime Minister, Mr Silvio Berlusconi. 
+            </p>
+          <p> Last July the government was forced to drop proposals banning the use of preventive detention, a key element in the investigative methods of Mr Di Pietro and his colleagues, when its proposed emergency legislation prompted widespread public protests. 
+            </p>
+          <p> At the time, opposition forces suspected Mr Berlusconi of wishing to block the Tangentopoli investigation into his own <amp> dollar sign </amp> 7 billion Fininvest company. Indeed shortly after the failed government decree, Mr Berlusconi 's Fininvest employee, Mr Salvatore Sciascia, were arrested, charged with paying bribes to tax inspectors.
+            </p>
+          <p> Two weeks ago Mr Berlusconi himself was notified that he was under investigation on possible corruption and bribery charges. 
+            </p>
+          <p> In the meantime, however, the government is fighting back at the magistrates, by sending in judicial inspectors to assess their work, and with a Supreme Court decision last week which moved the section of the Tangentopoli inquiry relative to Mr Berlusconi away from the Milan magistrates and awarded it to their colleagues in nearby Brescia.
+            </p>
+          <p> Mr Borelli said last night that the Milan pool would continue its investigative work, despite Judge Di Pietro 's resignation. But the fact that a man who had become a symbol of reform found himself forced to resign was a point underlined by the industrialist, Mr Carlo De Benedetti, one of many public figures to regret Mr Di Pietro 's resignation. He said: <quote> "If Di Pietro is to resign like this, then we 've lost one of the key figures in the Italian revolution…a man who was a symbol for all Italians. His resignation could have very negative consequences for Italy 's image."</quote>
+          </p>
+          <p> The opposition leader, Mr Massimo D'Alema, secretary of the Democratic Left (PDS), blamed the government. <quote> "This resignation is proof that apart from proving a failure in its social and economic policies, this government is involved in creating a climate of restoration of the old corrupt system,"</quote> he said.
+            </p>
+          <p> Mr Di Pietro was hard at work in Milan yesterday, concluding the state 's case in the Enimont trial, Italy 's <quote> "mother of all corruption cases" </quote> . Twenty-four defendants, including the former Prime Minister and Socialist leader, Mr Bettino Craxi, and the present Northern League leader, Mr Umberto Bossi, are accused of having accepted illegal payments into party offers by the Montedison chemical group.
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/057.00000</textSigle>
+            <title>Bovine Medicine - Diseases and Husbandry of Cattle</title>
+            <domain>LerNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Patrick James Hartigan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">London</idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-030$A">
+          <head>
+            <hi rend="bold"> Puberty </hi>
+          </head>
+          <p> Puberty, the process by which animals become capable of producing offspring, is often given a very restricted definition. According to Short (1984), <quote> 'we generally refer to puberty as that moment at which the female first comes into oestrus and ovulates, or the male first produces spermatozoa in his ejaculate'. </quote> The trouble with this widely-held perception of puberty is that it concentrates exclusively on the apparent endpoint of a protracted and complex physiological process and suggests that puberty is a discrete event that can be assigned to a particular day (or moment!). There is the additional problem that the apparent end-point (first release of the gametes) is not necessarily conclusive evidence that the animal has now reached the stage at which it can reproduce itself; for instance, it is clear that many heifers may not be capable of doing so until well after first ovulation (see review by Moran <hi rend="italic"> et al.</hi>, 1989). 
+            </p>
+          <p> In fact, the onset of puberty is a gradual process that is in train for several months during which there are significant morphological, physiological and behavioural responses to the progressive expression of both the steroidogenic and gametogenic activities of the gonads. The essential feature of the process is the maturation of the brain-hypothalamic-pituitary-gonadal axis, which culminates in the adult pattern of reproductive activity. The components of the hypothalamic-pituitary-gonadal axis are present before birth and, even at that stage, each component is capable of responding to appropriate hormonal signals. During gestation, steroid hormones released from the placenta have an inhibitory effect on the fetal hypothalamus that suppresses the activities of the axis. After birth the axis becomes an independent regulatory system that secretes increased amounts of gonadotrophins and gonadal steroids. However, the system is restricted to a relatively low level of activity (juvenile level); for instance, in the female the level of activity is well below that required for ovulation or cyclic ovarian activity. The restraint is due partly to the fine sensitivity of the GnRH pulse generator to negative feedback by gonadal steroids and partly to inhibitory inputs from the neural circuits that control the hypothalamus. 
+            </p>
+          <p> The transition to sexual maturity is brought about by progressive changes in the neuroendocrine activities of the axis in response to a variety of internal and environmental factors. The 'gonadostat' hypothesis postulates that the essential change during the transition to sexual maturity is a progressive decrease in sensitivity of the hypothalamus to the negative feedback effects of gonadal steroids (Fig. 30.13) so that the frequency of GnRH pulses is increased progressively. This leads to an increase in the sensitivity of the pituitary gonadotropes to GnRH and to an increase in the responsiveness of the gonads to the gonadotrophins (Fig. 30.14). Greater quantities of gonadotrophins are released from the pituitary gland and, in turn, greater quantities of steroids are released by the gonads. For instance, in the female the sensitivity of the hypothalamus to the negative feedback effect of oestrogen declines progressively and, as it does so, the increasing quantities of oestrogen from the ovaries can no longer hold the axis within the juvenile pattern of activity. There is a gradual movement of the regulatory system towards the adult pattern (Figs 30.13 and 30.14). Eventually, the ovaries produce a surge of oestrogen that exerts a positive feedback effect on the surge generator in the hypothalamus (Fig. 30.14) and this induces a surge of LH that leads to ovulation. 
+            </p>
+          <p> As our knowledge of these changes expands, there is increasing evidence that sexual maturity is regulated to a considerable extent by changing patterns of neural control over the hypothalamus. These alterations in intrinsic neural activity do not appear to be dependent on gonadal hormones; however, they play a crucial role in that they gradually release the GnRH pulse generator from the restraints exercised by the central nervous system during the juvenile period, thus enabling it to respond to the gonadal steroids in the adult manner. It is evident that the classical 'gonodostat' hypothesis does not furnish an entirely satisfactory explanation of the onset of puberty in all its details. Nevertheless, it does provide a conceptual framework that is adequate for the purposes of this text. 
+            </p>
+          <p> The first ovulation is likely to be silent; it appears that the hormonal requirements for the expression of oestrus are small quantities of progesterone from a regressing corpus luteum followed by a surge of oestrogen from the preovulatory follicle – a sequence that is absent at the time of first ovulation. Thus, the first oestrus observed by the stockperson indicated that the process of puberty is well advanced but it does not provide a precise date for the 'moment' of puberty. 
+            </p>
+          <p> The earliest possible maturation of the individual components of the reproductive axis (and, therefore, of the axis itself) is determined by genes, i.e. there are inherent breed variations in the onset of puberty. However, in all breeds this process is subject to delays caused by a variety of endogenous and exogenous influences, some of which can be manipulated by the stockperson to ensure that the heifer is ready for breeding at the desired time. The principal environmental factors that influence the onset of puberty are: season of birth, level of nutrition, growth rate, photoperiod, high ambient temperatures, intercurrent diseases, and presence of the male. 
+            </p>
+          <p> Specific reference to these factors will be made in the clinical segment of the text. For the moment, suffice it to say that, as a general guideline, the stockperson should devise a management strategy in the knowledge that the onset of puberty is a labile process that is conditioned by competition between the reproductive system and the other body systems of the growing animal for energy and specific nutrients. Reproduction, particularly in the female where it involves pregnancy followed by lactation, is an energy-consuming process to which Nature assigns a relatively low priority for the prepubertal animal. Evidence is accumulating from work on a number of species that inadequate intake of energy or nutrients can depress or abolish the activities of the GnRH pulse generator in the juvenile animal. This has been attributed, variously, to deficiencies in body weight, in rate of growth, in fat content or in fat:lean ratio. There is no agreement on the particular cue(s) that inhibit(s) the pulse generator but there is general acceptance of the thesis that the function of the generator is closely coupled with energy balance and that it is allowed to progress from the juvenile to the adult level of activity in the female only when the energetic status appears to be adequate to sustain pregnancy and lactation. 
+            </p>
+          <p> Selective culling is an integral part of efficient management of the dairy herd. It can be practised successfully only when the stockperson has available an adequate number of high-quality heifers due to calve down at the appropriate time. This requires careful management of the prepubertal animal to ensure that the reactivation of the hypothalamic pulse generator is not delayed unduly by environmental influences, principally nutritional factors and subclinical diseases. 
+            </p>
+          <p> Similarly, young bulls intended for breeding purposes require careful management during the juvenile period because the onset of puberty in the male is also influenced by a variety of factors (including breed, season of birth, energy intake and liveweight gain) that affect the reactivation of the hypothalamic GnRH pulse generator. 
+            </p>
+          <head>
+            <hi rend="bold"> Male physiology </hi>
+          </head>
+          <p> In the male, puberty is associated with changes in the pattern of LH secretion, a gradual increase in the concentration of testosterone in the blood, rapid growth of the testes and the initiation of spermatogenesis. In essence, the adult pattern of GnRH release is attained and the testes proceed to fulfil two primary functions: the synthesis and release of androgens (<hi rend="italic"> steriodogenesis </hi>) and the production of spermatozoa ( <hi rend="italic"> gametogenesis </hi> ). In most male mammals, these functions are performed best at temperatures somewhat lower than body core temperature. 
+            </p>
+          <p> In the bull the testes are located in the pendulous scrotum, where they are attuned to function at 3-4 <note>
+              <amp> degrees centigrade sign </amp>
+            </note> below core temperature. The three principal mechanisms by which the scrotal temperature is reduced are as follows. 1 Precooling of the arterial blood supply as it passes through the vascular cone in the spermatic cord. The vascular cone consists of a coiled segment of the spermatic artery that is surrounded by the pampiniform plexus of the spermatic vein. Because of this anatomical arrangement the arterial blood and the venous blood are flowing in parallel but in opposite directions; this allows for an efficient countercurrent exchange of heat between the two vessels. The net result is that the arterial blood delivered to the testes is several degrees below body core temperature. 2 Sweating from the many sweat glands in the scrotal skin. 3 Physical contact with cold ground or other cold objects. 
+            </p>
+          <p> In very cold weather, the temperature at the base of the scrotum may be up to 7 <note>
+              <amp> degrees centigrade </amp>
+            </note> below core values but the bull can attempt to curtail the drop in temperature by drawing the scrotum closer to the (relatively) warm body wall by contracting the cremaster and dartos muscles. 
+            </p>
+          <p> The gametogenic function of the testes is much more heat sensitive that the steroidogenic function; for instance, a retained testicle in a cryptorchid animal ('rig') may secrete androgens but the seminiferous tubules will remain infantile in structure and they will not produce spermatozoa. The retained testicle has a propensity to develop neoplasms. 
+            </p>
+          <head>
+            <hi rend="bold"> Morphology of the testis </hi>
+          </head>
+          <p> The testis is surrounded by a thick fibrous capsule, the tunica albuginea, form which septa project inwards to divide the substance of the testes into lobules (Fig. 30.15). Each lobule contains one to four highly convoluted seminiferous tubules and interstitial tissue that fills the spaces between the convolutions. 
+            </p>
+          <p> The interstitial tissue contains blood vessels, lymphatic vessels, nerves and the steroid-secreting Leydig cells. 
+            </p>
+          <p> The seminiferous tubules are about 200 pm in diameter and they may be up to 70 cm long; they open at both ends into the rete testis (Fig. 30.15). The tubules contain two populations of cells: (i) a fixed population of non-proliferating somatic cells, the Sertoli cells, and (ii) a migratory population of proliferating, differentiating germ cells (Fig. 30.16). 
+            </p>
+          <head> SERTOLI CELLS </head>
+          <p> The Sertoli cells have been described as the 'backbone' of the tubule. They are columnar cells that rest on the basement membrane and extend the full depth of the epithelial layer; they envelop the developing germ cells in deep recesses in their lateral walls and, ultimately, in their luminal surfaces. The Sertoli cells continually alter shape to accommodate the morphological changes in the germ cells during their migration from the base to the luminal surface. The plasma membranes of adjacent Sertoli cells form specialized interepithelial tight junctions that extend entirely around the circumference of each cell (Fig. 30.17). These junctions constitute the epithelial component of the blood-testis barrier that precludes the passage of many substances form the blood or interstitial fluid into the lumen of the seminiferous tubule. They also divide the intercellular spaces into two compartments: the basal compartment that contains the undifferentiated germ cells and the adluminal compartment that provides the appropriate microenvironment of the more differentiated germ cells (see below). 
+            </p>
+          <p> The basal surface of the Sertoli cell has specific receptors for FSH. The cells respond to the gonadotrophin by secreting (i) a nutrient fluid that sustains the germ cells in the intercellular spaces, (ii) androgen-binding protein that binds and transports testosterone to the epididymis, and (iii) inhibin that modulates the secretion of FSH by negative feedback at the pituitary gland (Fig. 30.18). Sertoli cells also have receptors for androgens; it is known that testosterone can maintain the functional integrity of the Sertoli cell when FSH is withdrawn. 
+            </p>
+          <p> Sertoli cells are resistant to relatively high levels of heat, ionizing radiation and many toxins, e.g. cadmium, nitrofurans, cytotoxins, that destroy differentiating germ cells. 
+            </p>
+          <head> GERM CELLS </head>
+          <p> A detailed description of the process of spermatogenesis (see Table 30.1) is beyond the scope of this text. Suffice it to say that the spermatogonia are the stem cells and that they begin the process by undergoing a number of mitotic divisions in the basal compartment. These divisions produce a pool of cells that are joined to each other by intercellular bridges (Fig. 30.19). 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/060.00000</textSigle>
+            <title> Advances in Electronics and Electron Physics </title>
+            <domain>LerTec</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Ron H. Cray</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-021$A">
+          <head> ADVANCES IN ELECTRONICS AND ELECTRON PHYSICS, VOL. 85 </head>
+          <head> Parallel Programming and Cray Computers </head>
+          <head> R. H. PERROTT </head>
+          <head>
+            <hi rend="italic"> Department of Computer Science, Queen's University, Belfast, United Kingdom </hi>
+          </head>
+          <head> I. INTRODUCTION </head>
+          <p> The development of sequential computers has been helped by the fact that the underlying hardware has essentially followed the same architectural model, known as the <hi rend="italic"> von Neumann model. </hi> The improvements in this model were caused primarily by advances in component technology; each improvement led to better performance in each generation of computers based on this model. Thus sequential computers have had a model of computation that formed a relatively stable base for the development of languages and tools. This is one of the main reasons for the widespread use of these tools and languages, however, the same cannot be said in the case of parallel machines. 
+            </p>
+          <p> Parallelism has always been utilised in component technology but only in the 1970s did it become explicitly available in a machine architecture for the programmer; e.g., the Cray-1. It was not until the 1980s that commercially available parallel machines incorporating a wide variety of architectures were introduced; e.g., AMT distributed array processor, Convex, Alliant, Hypercub, Cray X-MP. 
+            </p>
+          <p> It was the scientific community that first discovered the limitations of sequential machines in their applications. Applications such as weather forecasting were limited in their usefulness by the lack of sufficient processing power to deliver the results in a realistic time scale. The developments in component technology made it clear that the required increase in speed could never be obtained on sequential machines and that the only solution on offer was that of parallel computing. 
+            </p>
+          <p> Hence, one of the main promises of parallel processing is that the speed up in the execution of an application would be substantial and that this speed up would increase as the amount of parallelism in the system increases. As a consequence users would be able to attempt to solve larger problems as the machine 's capabilities and functionality increases. 
+            </p>
+          <p> Such improvements are possible only because of the economics of mass produced VLSI components. The production of such components increasingly favours parallel systems built mainly from cheap processors. Early results of experiments using parallel machines report a price-performance advantage in the range of 10 to 30 times better than traditional machines (Wadsworth, 1988). However, such comparisons usually ignore the cost of software, in particular, the effort involved in programming the parallel machine, which has been shown to be a nontrivial exercise requiring considerable skill and expertise. The developments in parallel software are not so far reaching nor so nearly well understood as the developments in parallel hardware. 
+            </p>
+          <p> In the case of sequential computers the architectural model, the programming paradigms and the method of constructing algorithms all have a single objective. In the case of parallel computers there is at present no single architectural model to represent parallelism but rather a variety of different parallel architectures. 
+            </p>
+          <p> The main issue affecting the architectural model is how to organise multiple processors to execute in parallel. One of the first models was that of an array processor - the SIMD model - where multiple processors execute the same instruction but on different data; the processors operate under the control of a single processor, which broadcasts the instructions to be executed. Array processors are particularly suited to problems involving matrices, and some impressive results have been achieved. However, the main criticism of this model is that there is little flexibility in the architecture for problems that could benefit from the execution of different instructions at the same time - the MIMD model. 
+            </p>
+          <p> The earliest MIMD models were based on the shared memory concept, where all the processors are connected to the same memory. In this scenario the processors can execute different parts of an application concurrently, thus ideally reducing the time to execute the complete program. However, this model can lead to severe memory contention problems as the processors attempt to access the same data. There is some question as to whether this model will scale to larger orders of parallelism. 
+            </p>
+          <p> A more recent MIMD model is the distributed memory model, where each processor has its own local memory and processors communicate by passing messages. However, there is an overhead cost associated with such communication, which in many instances can be substantial. The amount of overhead is influenced by such factors as the distance between the two processors wishing to communicate and the interconnection topology. The distributed model is scalable to greater orders of parallelism than that currently implemented. 
+            </p>
+          <p> In the case of parallel software the choice of programming language is no longer confined to a single approach. The main division of these languages is into either imperative or declarative languages. The declarative group can be further divided into logic and functional languages while the imperative group consist of procedural and object-oriented languages. 
+            </p>
+          <p> All the various languages that have been proposed offer some different way of capitalising on the power of parallel machines. To date it is not clear if any one approach is substantially better than any other as enough experience has not yet been accumulated. In many cases the concepts have not been efficiently implemented on parallel machines. In addition there is a considerable lack of tools to assist in all aspects of parallel programming and debugging. One consideration, which was perhaps not so important with sequential languages, is the ability to prove a program correct. This is becoming increasingly important as parallel machines are applied to more crucial aspects of human applications. However, the criteria for judging a language 's design that were established for sequential languages are still valid; criteria such as readability, simplicity, efficiency and expressiveness. 
+            </p>
+          <p> The third important aspect of programming parallel systems is the choice of algorithm. Studies have shown that transferring an efficient sequential algorithm to a parallel machine results in an inefficient parallel algorithm. It is now apparent that the design and construction of a new parallel algorithm for a particular application area can produce major performance improvements. 
+            </p>
+          <p> Hence, in the case of parallel systems there are three important and contributing factors; namely, the architectural model, the programming language and the choice of algorithm. The following sections concentrate on the programming language. 
+            </p>
+          <head> II. APPROACHES TO PARALLEL PROGRAMMING </head>
+          <p> Essentially, three main methods have been used to promote the wider use of parallel processing: (i) <hi rend="italic"> Extend an existing sequential language with features to represent parallelism. </hi> The advantage of extensions is that existing software can be transferred to a new parallel machine with relative cases. This is possible because programmers are already trained in the base language and can introduce the extensions gradually as they become more familiar with the situation in which they should be used and the effect they produce. However, experience to date has shown that extension languages have been limited to a certain range of hardware and to machines with a small number of processors. Problems have also been reported in the debugging of programs written in such languages, as the interaction of the sequential and the parallel features can give rise to difficulties in detecting errors. A more general problem is that many of these extensions have been developed by different groups using the same language base, which has led to nonstandard variants of the same language being produced, making the production of a standard for such languages difficult. 
+            </p>
+          <p> (ii) <hi rend="italic"> Implicit: use a sequential language but rely on the compiler to detect which parts of the program can be executed in parallel.</hi> Most of the work in this area is based on FORTRAN and examines the DO loops of the program to determine if it is possible to spread the iterations of the loop across different processors. 
+            </p>
+          <p> The advantage of such an approach is that existing sequential programs can be moved relatively inexpensively and quickly to the parallel machine. This can represent a substantial saving in development costs and is an attractive proposition for many purchasers of a new parallel machine. However, it is rare that the full parallelism of the program is exploited without the help of a programmer to restructure the program; this usually requires a reorganisation of the loops of the program so that the automatic detection techniques will work. 
+            </p>
+          <p> In the case of the construction of new programs it is advisable that a programmer have some knowledge of the detection techniques if as much parallelism as possible is to be detected. This represents a diversion for a programmer from the main task of program construction. In addition, such an approach inhibits the development of parallel languages and algorithms as it is confined to a sequential notation. 
+            </p>
+          <p> (iii) <hi rend="italic"> Develop a new parallel language. </hi> In this case a completely new parallel language is developed, ignoring all existing languages and applications. The main advantage of this approach is that a coherent approach to parallelism is presented. The parallel notation will enable a user to express directly the parallelism in an application and, in addition, will assist with the development of new parallel algorithms. However, it does mean that a user will have to rebuild the entire software base in the new language, which is a labour intensive, expensive and perhaps an error prone exercise. All existing applications are ignored, which requires courage on the part of the management of large installations, particularly since many new languages have not had the property of longevity. 
+            </p>
+          <head> III. IMPLICIT PARALLELISM </head>
+          <p> Recent years have demonstrated that parallel processors are now a viable and commercially successful product and that it is the software for these machines which is lagging behind and causing the most difficulties. The highly successful tactic of Cray in the 1970s, of providing a FORTRAN engine, a machine that would take existing FORTRAN programs and detect which parts could be automatically vectorised, is the objective for the newer breed of multiprocessors only now based on parallelism. The origins of many of these systems can be traced to the research of David Kuck at the University of Illinois on vectorisation technique. This research has been extended to incorporate the situation where many processors, possibly vector processors, share the same memory. The model used for most shared memory machines is very similar in nature. However there may be differences in how the processors and memory interact; for example, in the Cray X-MP the connections between processors and memory are direct while on the Alliant and Convex a bus is used to connect memory and processors. The latter machines incorporate a data cache memory to provide acceptable access times, but it is not significant enough to disrupt their classification as shared memory machines. Such factors are not relevant as far as the programming of these machines is concerned. 
+            </p>
+          <p> In general, the main tactic of parallelisation systems is to examine nested DO loops, with the object of vectorising the innermost loop and parallelising the outermost loop. The methods rely on data dependence analysis techniques that determine the flow of data in a program. This, in turn, enables statements to be identified that can be executed in parallel. Data dependence analysis is the cornerstone on which all automatic parallelism detection methods are built; the quality of a paralleliser is directly related to the quality of the dependence analyser. 
+            </p>
+          <p> Currently techniques are available for nested DO loops but have not yet been commercially applied to complete programs. This requires full interprocedural analysis - the tracking of data across procedure calls - to be performed on a user program. Once a compiler uses interprocedural information as a basis for compiling time decisions, data dependencies between procedures in a program can be resolved. The systems at Rice University and IBM provide a limited form of interprocedural analysis. 
+            </p>
+          <p> There are certain parallel programming situations that can be automatically parallelised without any user intervention. The most straightforward situation consists of loops with no data dependency between the iterations. In this case the iterations can be assigned to the processors either individually or in groups depending on the scheduling algorithms. In some systems the programmer can decide. 
+            </p>
+          <p> In other situations if there is a possibility of a data dependency the compiler takes a conservative view, which usually means that no parallelisation is attempted. The burden is then placed on the programmer to decide if the compiler 's decision should be overridden; this is achieved by a user inserting compiler directives into the program code. This is particularly the case in situations where interprocedural analysis is required as most existing systems are not capable of performing this analysis. This is not always an easy decision and can require a considerable level of skill on behalf of the programmer. To help with parallelisation several manufacturers have incorporated into their hardware special features to handle synchronisation of the processors. This, in turn, can be used when processing, in parallel, different iterations of a DO loop that has data dependencies. For example, the Alliant machines have a concurrency control bus that is used to reduce the overhead involved in processor synchronisation and can be utilised in loops with data dependencies. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/061.00000</textSigle>
+            <title>Analytical Biochemistry</title>
+            <domain>LerNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Brent Irvine, Michael Ennis, Carvell H. Williams</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1996</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-023$A">
+          <div id="W2A-023$B">
+            <div id="W2A-023$C">
+              <head> VISUAL DETECTION OF PEPTIDASE ACTIVITY USING FLUOROGENIC SUBSTRATES IN A MICROTITER PLATE ASSAY </head>
+              <head> G. Brent Irvine, Michael Ennis, and Carvell H. Williams <hi rend="italic"> Division of Biochemistry, School of Biology and Biochemistry, The Queen's University of Belfast, Medical Biology Centre, 97 Lisburn Road, Belfast BT9 7BL, Northern Ireland, United Kingdom </hi>
+              </head>
+              <head> Received August 14, 1989 </head>
+              <p>
+                <hi rend="bold"> A simple, inexpensive, and sensitive assay for peptidase activity has been devised. The assay was performed in a microtiter plate and was based on flourogenic peptide substrates, many of which are commercially available. 7-Amino-4-methyl coumarin the flourescent product liberated during an incubation period of between 1 and 16 h, was detected by inspection of the plate under ultraviolet light of wavelength 356 nm. A fluorometer was not required. Using <amp> alpha sign </amp> -chymotrypsin as a model enzyme, with succinyl-L-alanyl-L-analyl-L-prolyl-L-phenylalanine 4-methyl-coumarlyl-7-amide as substrate, it was shown that as little as 4 fmol of enzyme could be detected. The method was non-quantitative and was particularly suited to location of enzyme activity in fractions during a purification procedure. The validity of the assay was demonstrated by detection of activity of a known enzyme, <amp> alpha sign </amp> -chymotrypsin, after its purification by size-exclusion high-performance liquid chromatography. The method was used to locate two forms of aminopeptidase activity, in fractions from size-exclusion chromatography of an extract from reproductive tissue of <hi rend="italic"> Helix aspersa, </hi> using L-leucine 4-methyl-coumaryl-7-amide as substrate. </hi>
+              </p>
+              <p> Some of the most sensitive methods for assaying proteolytic enzymes are based on the liberation of a fluorescent product from a fluorogenic reactant. These methods are normally used in a quantitative manner to titrate the enzyme (1) or to estimate its concentration by relating an initial velocity to one given by a standard solution of enzyme (2). A spectrofluorometer is needed for accurate determinations of fluorescent product concentration and the reaction is carried out in a cuvette, a relatively laborious procedure if many samples are to be assayed. Dresden <hi rend="italic"> et al. </hi> (3) have outlined the savings that accrue in time and reagent volumes when enzyme assays are performed in microtiter plates containing 96 wells. These authors developed a microtiter plate assay for a cathepsin B-like enzyme from <hi rend="italic"> Schistosoma mansoni </hi> using the fluorogenic substrate benzyloxycarbonyl-L-phenylalanyl-L-arginine 4-methyl-coumaryl-7-amide. The fluorescent product, (AMC),<note> 1 </note> 7-amino-4-methyl coumarin was measured using an inverted fluorescence microscope, enabling the reaction kinetics of the system to be determined. The authors also pointed out the potential of the method for screening for peptidases of different specificity using appropriate fluorogenic peptide substrates. However, in many cases it is not necessary to estimate the concentration of an enzyme or to determine its kinetic behavior but merely to establish whether it is present in a sample. This would apply particularly to the location of enzyme activity in fractions obtained during a purification procedure. It could also be of value in screening potential inhibitors. To this end we have developed a microtiter plate assay, using fluorogenic substrates, that enables us to locate peptidase activity by inspection of the plate under an ultraviolet lamp. No expensive spectrofluorometric instrumentation is needed and a permanent record is easily obtained by photographing the illuminated microtiter plate. The method is illustrated with reference to the purification of aminopeptidase activities from reproductive tissue of the garden snail, <hi rend="italic"> Helix aspersa. </hi>
+              </p>
+              <head> MATERIALS AND METHODS </head>
+              <p> The following enzymes were obtained from Sigma Chemical Co. (St. Louis, MO): <amp> alpha sign </amp> -chymotrypsin Type II (C4129); <amp> alpha sign </amp> -chymotrypsin Type VI inactivated with DEP (C1012); leucine aminopeptidase (LAP) Type III-CP, from porcine kidney cytosol (L9876). Succinyl-L-alanyl-L-alanyl-L-prolyl-L-phenylalanine 4-methyl-coumaryl-7-amide (Suc-AAPF-AMC) was purchased from Peninsula Laboratories, Inc. Belmont, CA). Succinyl-L-analyl-L-phenylalanine 4-methyl-coumaryl-7-amide (Suc-AAF-AMC) was supplied by Sigma. AMC was prepared by the method of Zimmerman <hi rend="italic"> et al </hi> (2). L-Leucine 4-methyl-coumaryl-7-amide (L-AMC) was prepared by the general method for the preparation of amides described by Yasutake and Powers (4). 
+                    </p>
+              <p> Absolute concentrations of solutions of <amp> alpha sign </amp> -chymotrypsin were determined by titration with 4-methylumbelliferyl-p-trimethylammonium cinnamate chloride (Sigma) using the method of Jameson <hi rend="italic"> et al. </hi> (1) and a TKO 100 minifluorometer (Hoefer Scientific Instruments, Newcastle, UK). Microtiter plate assays for peptidase activity were carried out in a MircoFLUOR plate (Dynatech, Billinghurst, UK) covered with a plastic lid. A stock solution (8.1 mM) of Suc-AAPF-AMC was made up in dimethyl sulfoxide. All other solutions were made up in 0,1 M Tris-HCI buffer, pH 7.4, containing 10 mM CaCl <sb> 2 </sb> . Each well contained a final volume of 375 <amp> mu sign </amp> l. To view the plate it was placed between two dual-wavelength ultraviolet lamps (Baird and Tatlock, Romford, UK) operated at 356 nm. The photograph shown in Fig. 1 was taken using an Olympus OM-1 camera equipped with a Zuiko MC Auto-Macro lens fitted with uv (0) and polarizing filters (Hoya). Kodak Tri-X 135 film was exposed for 10 s at aperture f 11. 
+                    </p>
+              <p> Reproductive tissue was dissected from freshly killed snails and was frozen in liquid nitrogen. On partial thawing, the tissue was finely chopped using a scalpel and was then homogenized in 0.1 M Tris-HCI buffer, pH 7.4, containing 1 mM CaCl <sb> 2 </sb>, 1 mM dithiothreitol, and 0.25 M sucrose (1 g tissue/4 ml buffer) at 4 <amp> degrees sign </amp> C. The homogenate was centrifuged at 50,000g for 30 min at 4 <amp> degrees sign </amp> C and the supernatant was stored at -20 <amp> degrees sign </amp> C. The protein concentration of the supernatant was measured by the method of Lowry <hi rend="italic"> et al. </hi> (5) using bovine serum albumin (Sigma A4378) as standard. 
+                    </p>
+              <p> High-performance size-exclusion liquid chromatography of this supernatant was carried out in 20 mM Tris-HCI buffer, pH 7.0, containing 0.25 M NaCl and 10 mM CaCl <sb> 2 </sb> on a TSK preColumn (7,5 X 75 mm) linked in series with two TSK-G2000-SW columns (7,5 X 300 mm) from LKB (Uppsala, Sweden) (Fig. 2). The chromatography was performed with a Model 510 pump, a U6K injector, and a 441 absorbance detector (Waters, Harrow, UK) linked to a 2001 series chart recorder (Vitatron, Maidenhead, UK). Fractions (0.5 ml) were collected manually and were stored at -20 <amp> degrees sign </amp> C prior to assay. 
+                    </p>
+              <head> RESULTS AND DISCUSSION </head>
+              <p> Incubation of peptidases for 16 h at room temperature (about 20 <amp> degrees sign </amp> C) with an appropriate fluorogenic substrate produced a fluorescent product that was visible upon illumination of the microtiter plate with ultraviolet light (Fig. 1). Incubation times of a few hours were normally sufficient and an overnight incubation was only needed in cases where enzyme activity was very low. For example, in the assay shown in Fig. 1, activity was detectable after a 3-h incubation in all the wells that became strongly fluorescent after 16 h. 
+                    </p>
+              <p> Whereas AMC has excitation and emission maxima at 345 and 445 nm, respectively, when the amino group is converted to an amide, for example in a fluorogenic peptide substrate, these values are shifted down to 325 and 395 nm, respectively (2). Commercially available ultraviolet lamps emit light of 356 nm, which corresponds closely to the desired excitation maximum for AMC. Under such illumination, fluorogenic substrate of concentration 10 <amp> mu sign </amp> M emitted a dark purple fluorescent light that appeared to the naked eye to be much less intense than that due to an equivalent concentration of AMC. There was, however, a definite background fluorescence in substrate-containing wells. This can be seen by comparison of well B10 (Fig. 1), containing 10 <amp> mu sign </amp> M Suc-AAPF-AMC, with well A10, containing only buffer. This background increased markedly if concentrations of substrate in excess of 10 <amp> mu sign </amp> M were used, making it more difficult to differentiate between wells where AMC was generated and those where it was not. Nonetheless, it was possible to use substrate concentrations up to 100 <amp> mu sign </amp> M since the intensity of the fluorescence due to the higher concentration of AMC produced under these conditions compensated to some degree. This would be particularly useful for substrates with relatively high K <sb> m </sb> values for the enzyme, where the reaction might otherwise be very slow. Because the Tri-X film used for the photograph in Fig. 1 was sensitive to ultraviolet light, a uv(0) filter with a cut-off value of 400 nm was used to give a photograph that more accurately matched the image seen with the naked eye. A polarizing filter was used to minimize light reflected from the glossy black surface of the MicroFLUOR plate. This plate is designed for assays based on fluorescence and is made from opaque black plastic so that light is confined within each well and does not illuminate adjacent wells, as happens with transparent plates. 
+                    </p>
+              <p> Standards containing decreasing concentrations of AMC were added to wells 1 to 10 in Row A. Concentrations below 1 <amp> mu sign </amp> M (wells A7-A10) did not produce visible fluorescence. The use of substrate concentrations of 10 <amp> mu sign </amp> M appeared to be optimal in terms of minimizing intrinsic fluorescence due to substrate yet providing sufficient product to see clearly. It also conserved substrate. For example, 1 mg of Suc-AAPF-AMC was sufficient for 400 wells. The visual assay was intrinsically less sensitive than a spectrofluorometric assay, since concentrations of AMC 100-fold lower could be measured using an instrument. Nevertheless, very low concentrations of peptidase activity could easily be detected after an overnight incubations. From Row B it is clear that a concentration of <amp> alpha sign </amp> -chymotrypsin of 0.2 ng/well (B5) gave rise to clear fluorescence after 16 h at 20 <amp> degrees sign </amp> C. The well B1 became strongly fluorescent immediately after addition of enzyme (0.2 <amp> mu sign </amp> g protein/well) after a few minutes, and B3 (20 ng protein/well) within 30 min. The presence of other proteins did not affect the method, since inclusion of 0.01 <amp> per cent sign </amp> serum albumin in all solutions did not alter the results illustrated in Row B (data not shown). The results shown in Row C were obtained using the same conditions as those in Row B except that <amp> alpha sign </amp> -chymotrypsin that had been inactivated with DFP was used. This material was stated to have residual activity of 0.1 unit/mg compared to 52 units/mg for the uninhibited enzyme. This 500-fold decrease in activity was clear in our assay since only at a 1000-fold higher concentration (0.2 <amp> mu sign </amp> g protein/well, well C2) was a positive result obtained. The operational molarity of the stock solution (0.1 mg/ml) of <amp> alpha sign </amp> -chymotrypsin, determined by titration with 4-methylumbelliferyl-p-trimethylammonium cinnamate chloride, was found to be 2.084 <amp> plus or minus sign </amp> 0.004 <amp> mu sign </amp> M (mean <amp> plus or minus sign </amp> SD of six measurements). This compared with a theoretical value of 4.27 <amp> mu sign </amp> M based on weight, so that the lyophilized protein contained 49 <amp> per cent sign </amp> active enzyme. Consequently, the amount a <amp> alpha sign </amp> -chymotrypsin present in well B5 (the lowest concentration of enzyme that gave a positive result) was actually about 0.1 ng or 4 fmol. Thus, using an overnight incubation it was possible to detect very low concentrations of enzyme, provided that a good substrate (one that was substantially converted to product during this period) such as Suc-AAPF-AMC was available. On the other hand the substrate Suc-AAF-AMC did not provide as sensitive an assay for <amp> alpha sign </amp> -chymotrypsin and concentrations of the enzyme two orders of magnitude higher than those detectable using Suc-AAPF-AMC were needed to give a positive result (data not shown). L-AMC did not provide a very sensitive assay for LAP. Only at concentrations of at least 3.8 <amp> mu sign </amp> g protein/well (well D2) was LAP detectable using L-AMC as substrate. The sensitivity was increased 100-fold, however, if calcium in the assay buffer was replaced by magnesium, which has been shown to activate LAP (6). Thus, in the presence of MgSO <sb> 4 </sb> (5mM), LAP at a concentration of 38 ng protein/well gave a weakly positive result (data not shown). 
+                    </p>
+              <p> The method has been applied to the detection of peptidase activity in fractions obtained during a purification procedure. Two aminopeptidase activities, separated by size-exclusion chromatography of a preparation from reproductive tissue of <hi rend="italic"> H. aspersa </hi> (Fig. 2), were readily detected (wells E1-E4 and E7-F1). Indeed wells E2 and E8, where maximal activities were found, gave positive results after incubation for 30 min. The apparent molecular weights of proteins eluted in fractions 2 and 8, corresponding to the peak position of the two iminopeptidase activities, were estimated, by comparison with the elution volumes of immunoglobulin G and serum albumin, to be <amp> 'less than' sign </amp> 160,000 and about 65,000, respectively. 
+                    </p>
+              <p> In order to establish that under ideal conditions the microtiter plate assay detects the appropriate material, a sample of a known enzyme, <amp> alpha sign </amp> -chymotrypsin, was subjected to size-exclusion chromatography on the same system. From inspection of Fig. 3 it can be seen that the peak of enzyme activity in fractions 19 and 20 corresponded exactly to the protein peak as measured by absorbance at 214 nm. 
+                    </p>
+            </div>
+          </div>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/062.00000</textSigle>
+            <title>Journal of the Chemical Society, Perkin Transactions</title>
+            <domain>LerNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>David Guthrie, Robert F. Geraghty, G. Brent Irvine, Carvell H. Williams</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">London</idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-025$A">
+          <div id="W2A-025$B">
+            <div id="W2A-025$C">
+              <div id="W2A-025$D">
+                <head>
+                  <hi rend="bold"> Conformational Studies on Analogues of the Invertebrate Peptide
+                            pyroGlu-Asp-Pro-Phe-Leu-Arg-Phe-NH <sb> 2 </sb> using <note> 1 </note> H NMR </hi>
+                </head>
+                <head>
+                  <hi rend="bold"> David J. S. Guthrie, Robert F. Geraghty, G. Brent Irvine and Carvell H. Williams </hi>
+                  <hi rend="italic"> Division of Biochemistry, School of Biology <amp> ampersand </amp> Biochemistry, Medical Biology Centre, Queen's University, Belfast, UK BT9 7BL </hi>
+                </head>
+                <p> The peptide pQDPFLRFamide is one of several closely related heptapetides found in invertebrates, including molluscs. Electrophysiological findings and ligand binding studies have both suggested that these heptapeptides probably interact with receptors distinct from those that are activated by the related tetrapeptide FMRFamide (also found in the same group of invertebrates), depite the fact that some syntetic <hi rend="italic"> N </hi> -terminally extended analogues of the latter show marked tetrapeptidelike activity. We have carried out structural studies, using 1- and 2-dimensional <note> 1 </note> H NMR, on pQDPFLRFamide and some synthetic analogues in which Asp-2 was replaced by Asn and Pro-3 by either Aib (<amp> alpha sign </amp> -amino isobutyric acid) of by Gly. The results are consistent with the suggestion that pQDPFLRFamide can adopt a bent conformation, which might form the basis of the selectivity of this and related heptapeptides. 
+                        </p>
+                <p> Two types of FMRFamide-related peptides (Farps) containing either four or seven amino acids have been found in several groups of invertebrates, including molluscs. <note> 1,2 </note> These peptides are thought to participate in a range of neuroregulatory functions. In the land snail <hi rend="italic"> Helix aspersa, </hi> the peptides include FXRFamide (X <amp> equals sign </amp> M or L) and XDPFLRFamide (X <amp> equals sign </amp> pQ, S or N). <note> 3,4 </note> Cloning of the gene that codes for the heptapeptides in this mollusc has revealed the presence of other, closely related heptapeptide sequences.<note> 4 </note> Electrophysiological studies in this species have indicated that these two groups of peptides probably act through different receptors.<note> 5 </note> Although ligandbinding studies have shown the presence of high and low affinity binding sites on membrane preparations from <hi rend="italic"> Helix </hi> tissues for the tetrapeptides and their analogues,<note> 6-8 </note> so far no specific high affinity binding site for the heptapeptides has been unequivocally demonstrated in such preparations. 
+                        </p>
+                <p> High affinity binding at the tetrapeptide-binding site is not restricted to peptides containing four amino acids. For example, some <hi rend="italic"> N </hi> -terminal extensions of FMRFamide or its analogues also interact efficiently at this site, in some cases with an affinity better than that of the natural ligand.<note> 6,7 </note> These include <hi rend="italic"> N </hi> -3 (<hi rend="italic"> p </hi> -hydroxyphenyl)propanoyl-FMRFamide, YFMRFamide and YGGFMRFamide. 
+                        </p>
+                <p> This is not the case for the naturally occurring heptapeptide Farps, which compete only weakly with tetrapeptides such as FMRFamide.<note> 6-8 </note> It is clear therefore that the particular <hi rend="italic"> N </hi> -terminal tripeptide sequence XDP in the heptapeptides must be crucial for discriminating between the tetrapeptide and putative heptapeptide receptors. One possible way in which this might happen is if the heptapeptides contained a turn in the region of the Asp-Pro sequence, since it has been shown that the sequence Asx-Pro is frequently found to occur at positions 1 and 2 of <amp> beta sign </amp> -turns in proteins and peptides. <note> 9,10 </note> Such a conformation might also be stabilised by electrostatic interactions between the side chains of the Asp and Arg residues. We have previously shown that the effects on agonist activity and ligand binding of substitutions of Asp or Pro in PQDPFLRFamide are broadly in keeping with the presence of a bent conformation, though the electrostatic interaction may not be obligatory for biological activity. <note> 11 </note> Evidence that might support this viewpoint has been sought by an NMR study of the pQDPFLRamide and some analogues. A preliminary report of part of this work has already been published.<note> 12 </note>
+                </p>
+                <p> It is unlikely that peptides such as those considered here will adopt a single conformation. All studies to date point to small linear peptides as possessing considerable conformational freedom and existing as an equilibrium over several conformations of similar energy. <note> 13 </note> The object of a study such as this must be to see if any conformation(s) or families of conformations exist with sufficient population to permit detection.<note> 14 </note> It is also relevant to consider the most appropriate solvent in which to study biomolecules. Water is often seen as the obvious choice, <note> 15 </note> but, as well as introducing some technical problems, a solution in water cannot really be considered typical of conditions prevailing <hi rend="italic"> in vivo, </hi> when many other ions and molecules will be present. Furthermore, we are more interested in predicting what may be the conformation of a peptide in a binding site, and such regions are usually assumed to be a lot less polar than bulk water. DMSO has often been used as a solvent not only because many peptides are readily soluble in it, but also with the hope that its polarity may be similar to that of the binding pocket in a receptor or enzyme. However, it has also been argued that, <hi rend="italic"> in vivo </hi> , layers of water near to a protein surface are more viscous than bulk water and that this increased viscosity, by reducing conformational mobility, may 'filter' an otherwise flexible peptide into a predominant conformation. <note> 16 </note> Mixtures of water and DMSO have higher viscosity than either solvent alone and have been suggested as an appropriate solvent for conformational studies. <note> 15,16 </note>
+                </p>
+                <head>
+                  <hi rend="bold"> Experimental </hi>
+                </head>
+                <p>
+                  <hi rend="italic"> Synthesis.</hi> — The following peptides used in this study were prepared by solid-phase synthesis, as described previously; <EdCm> equation inserted </EdCm>. As reported, all peptides were purified using reversed-phase C <sb> 18 </sb> HPLC <amp> mu sign </amp> -Bondapak, Waters), gave satisfactory amino acid analyses (Picotag Analyser, Waters) and the expected molecular ions were observed in FAB mass spectrometry (VG AutoSpec. instrument at the SERC Mass Spectrometry Service Centre). In addition, the Gly <note> 3 </note> analogue was subjected to additional analysis to eliminate the possibility that complexities observed in the NMR spectrum were due to impurities. Capillary electrophoresis of this analogue (Thermo Separation Products) at pH 3.0, 4.5 and 9.1 and in the presence of SDS (sodium dodecyl sulfate) at pH 9.0 showed only one major component with an integrated value of 93 <amp> per cent sign </amp> . Similarly, electrospray mass spectrometry (VG Quattro instrument fitted with electrospray ionisation), which because it analyses the total sample is more likely than FABMS to detect all components present, identified one main component <hi rend="italic"> m/z </hi>
+                  <amp> equals sign </amp> 864.9; <hi rend="italic"> M </hi> , 863.4) with other species present at levels less than 1 <amp> per cent sign </amp> . 
+                        </p>
+                <p>
+                  <hi rend="italic"> NMR Studies. </hi> — Experiments were carried out on samples prepared as follows. Approximately 5 mg of peptide was dissolved in deionised water and the pH adjusted to near 6.0. The solvent was removed under vacuum in a Speed VAC concentrator (Savant). The samples were further dried <hi rend="italic"> in vacuo </hi> over phosphorous pentoxide for 24 h. The peptide was then dissolved in <EdCm> equation inserted </EdCm> and in some cases this was further diluted with H <sb> 2 </sb> O. In one case the solvent used was <EdCm> equation inserted </EdCm> . Spectra were recorded on a Varian VXR-600S spectrometer at the Edinburgh University Ultra High Field NMR Service. 
+                        </p>
+                <p>
+                  <note> 1 </note> H NMR spectra were acquired with 32 K data points and Fourier transformed with zero filling into 64K points. For some spectra, an exponential line broadening factor of 0.5 was applied. 2D spectra were obtained by the Hypercomplex method of States, Heberkorn and Reuben <note> 17 </note> as 512 FIDs of 2 K data points and transformed with zero filling into 1K <amp> multiplication sign </amp> 2K points using either a sine bell or Gaussian window. Assignments of proton resonances in the peptides were made using several types of 2D spectra, <note> 18a, 19 </note>
+                  <hi rend="italic"> i.e. </hi> DQF-COSY, TOCSY and ROESY. ROCSY spectra were acquired with a mixing time of 65 ms (for DMSO solution) or 80 ms (for DMSO/H <sb> 2 </sb> O solution) and ROESY spectra with mixing times of 150 (DMSO and H <sb> 2 </sb> O) or 200 ms (DMSO/H <sb> 2 </sb> O). For ROESY spectra, the frequency offset was varied to ensure that the observed cross peaks did not arise from Hartmann-Hahn transfer coupled with incoherent magnetisation transfer.<note> 20 </note>
+                </p>
+                <p> The temperature dependence of amide protons was determined from 1D spectra recorded at 5 <amp> degrees sign </amp> C intervals from 25 to 55 <amp> degrees sign </amp> C. In all cases the variations of the chemical shift of the amide proton with temperature was linear and the temperature coefficient was determined by linear regression analysis (correlation coefficients <amp> less than or equal to sign </amp> 0.95).
+                        </p>
+                <head>
+                  <hi rend="bold"> Results and Discussion </hi>
+                </head>
+                <p>
+                  <note> 1 </note> H <hi rend="italic"> Resonance Assignments. </hi> — The amide regions of the 1D spectra of the peptides are shown in Fig. 1. Detailed analyses of the NMR spectra of the peptides, under a variety of conditions were made using DQF-COSY, TOCSY and ROESY experiments and are summarised for pQDPFLRFamide and the Asn <note> 2 </note> and Aib <note> 3 </note> analogues in Tables 1 to 3, respectively. The temperature coefficients of the amide protons of the peptides are listed in Table 4. The effects of pH on the amide protons of pQDPFLRFamide are shown in Fig. 2. The nuclear Overhauser connectivities observed in ROESY spectra are summarised in Table 5 and two examples of the spectra obtained are shown in Figs. 3 and 4. Moving the frequency offset in selected ROESY spectra by up to 300 Hz yielded essentially identical spectra.
+                        </p>
+                <p>
+                  <hi rend="italic"> Conformational Studies. </hi> — As mentioned above, the available evidence suggests that most small peptides exist as an ensemble of interconverting conformations. Inspection of the assignments reported in Tables 1 to 3 shows that considerable differences exist between the spectrum of pQDPFLRFamide and those of the Asn <note> 2 </note> , Aib <note> 3 </note> and Gly <note> 3 </note> analogues and between the spectra of pQDPFLRFamide recorded under different conditions. At the very least, this points to the various conformations available to the peptides being populated to different extents for each peptide or set of conditions. Examination of all the observed NMR spectra (Tables 1 to 3 and Fig. 1), the amide proton temperature coefficient (Table 4) and the nuclear Overhauser connectivities (Table 5), allows certain conclusions to be drawn. These will now be presented for pQDPFLRFamide and the Asn <note> 2 </note> and Aib <note> 3 </note> analogues. The Gly <note> 3 </note> analogue, which displays rather different behaviour, will be discussed later. 
+                        </p>
+                <p>
+                  <hi rend="italic"> Configuration of the Asx-Pro peptide bond. </hi> Under all the conditions used, the ROESY spectra obtained for pQDPFLRFamide and the Asn <note> 2 </note> analogue display a strong d <amp> alpha and delta sign </amp> ( <hi rend="italic"> i,i </hi>
+                  <amp> plus sign </amp> 1) connectivity between Asx-2 and Pro-3, indicating that the peptide exists predominantly as the <hi rend="italic"> trans </hi> isomer of the Asx-Pro peptide bond. <note> 18b </note> In several of the 1D spectra ( <hi rend="italic"> e.g.</hi> PQDPFLRFamide in H <sb> 2 </sb> O at pH 3.0 and the Asn <note> 2 </note> analogue in DMSO) a set of minor peaks is visible which could be due to a small fraction of molecules existing as the <hi rend="italic"> cis </hi> isomer, but no d <amp> double alpha sign </amp> ( <hi rend="italic"> i,i </hi> + 1) or of d <sb> N </sb>
+                  <amp> alpha sign </amp> ( <hi rend="italic"> i,i </hi> + 1) connectivities between Asx-2 and Pro-3, characteristics of a <hi rend="italic"> cis </hi> peptide bond, were ever observed. 
+                        </p>
+                <p>
+                  <hi rend="italic"> Existence of a salt bridge between Asp-2 and Arg-6. </hi> Several types of evidence suggest that such a salt bridge exists and has an influence on the conformation. 
+                        </p>
+                <p>
+                  <hi rend="italic"> (a) Appearance of amide proton resonances. </hi> The amide proton resonances of the Asn <note> 2 </note> analogue in both DMSO and DMSO/H <sb> 2 </sb> O are sharp, consistent with the averaging over the available conformations being essentially complete. However, for pQDPFLRFamide and the Aib <note> 3 </note> analogue in DMSO the amide resonances are broad. Again, this could be interpreted as a case of equilibria over an ensemble of conformers but now, because of the additional constraint of an internal salt bridge between the sidechains of Asp-2 and Arg-6, the rates of interconversion are slower ant the averaging of the NMR signals is less complete for the Asn <note> 2 </note> analogue. 
+                        </p>
+                <p>
+                  <hi rend="italic"> (b) Differences in chemical shift values. </hi> Compared with the Asn <note> 2 </note> analogue in DMSO, the amide proton resonance of Phe-4 in pQDPFLRFamide in DMSO has moved from 7.97 to 7.59 and the amide and <amp> alpha sign </amp> proton resonances of Leu-5 have moved from 7.30 and 4.29, respectively, to 7.77 and 3.95 (Tables 1 and 2). The corresponding residues in the Aib <note> 3 </note> analogue, where a salt bridge is also possible, have chemical shifts close to those of pQDPFLRFamide (Table 3). It is difficult to account for differences between pQDPFLRFamide and the Asn <note> 2 </note> analogue other than by postulating a major conformational difference due to a salt bridge. 
+                        </p>
+                <p>
+                  <hi rend="italic"> (c) Variation with pH of the amide protons in pQDPFLRFamide. </hi> Not only does the chemical shift of the Asp-2 amide proton vary as the pH is altered over a range covering the pK <sb> a </sb> of the Asp sidechain carboxyl group, but the Phe-4 and Arg-6 amide resonances also change dramatically (Fig. 2). Such changes imply that a major alteration in conformation, affecting most of the peptide, occurs on ionisation of the Asp sidechain. It seems most likely that this involves an increase in number of those conformers which allow a salt bridge between the sidechains af Asp-2 and Arg-6. If such a salt bridge exists in aqueous solution, it is even more likely to exist in solvents of lower dielectric constant. 
+                        </p>
+              </div>
+            </div>
+          </div>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/064.00000</textSigle>
+            <title>Lymphatic Transport of Drugs</title>
+            <domain>LerNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Caitriona M. O’Driscoll</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Boca Raton</idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-026$A">
+          <head>
+            <hi rend="bold"> III. THE FORMATION OF LYMPH </hi>
+          </head>
+          <p> The formation of lymph is influenced by the relative permeabilities of the blood capillary endothelium and the lymphatic capillary endothelium. Normal blood capillaries are impermeable to proteins of molecular weight less than 40 kD which may leak out and accumulate in the interstitium. Persistent leakage and accumulation would eventually result in edema formation. To avoid this situation, the lymphatic system acts by removing the excess tissue fluids and plasma proteins, i.e., lymph, and returning it to the bloodstream. In this way the homeostasis of the interstitial environment is maintained. The permeability of the blood capillary endothelium is limited. Although freely permeable to water and molecules less than 40 kD molecular weight, it is only semi permeable to colloid of protein molecular size. Consequently, only relatively small amounts of the total plasma protein cross the blood capillary wall.<note> 37-39 </note>
+          </p>
+          <head>
+            <hi rend="bold"> A. PERMEABILITY OF THE LYMPHATIC CAPILLARY ENDOTHELIUM </hi>
+          </head>
+          <p> The pathways taken, and the forces involved in the movement of interstitial fluid and proteins (lymph) across the lymphatic endothelium into the lumen of the capillaries, are the subject of ongoing research. Two major pathways have been suggested; the first is via intercellular junctions and the second via cytoplasmic vesicles. Most of the work to determine the relative contribution of the two routes to lymphatic capillary transport has been carried out using macromolecular tracers. 
+            </p>
+          <head>
+            <hi rend="bold"> 1. Intercellular Junctions </hi>
+          </head>
+          <p> The role of the intercellular junction was investigated by Leak <note> 27 </note> following interstitial injection of ferritin, thorium dioxide, carbon, and latex spheres. The results obtained indicate that these tracer substances are transported into and out of lymph via the intercellular junctions rather than by vesicular transport (Figure 6). <note> 27 </note> These results have been supported by numerous other studies. <note> 22,40-42 </note>
+          </p>
+          <p> The relative contribution of the two routes has also been examined following intravenous (I.V.) injection of tracers such as horseradish peroxidase (HRP) and ferritin. <note> 24,25 </note> These experiments, performed using renal lymphatics, are more physiologically relevant since the possibility of producing artificially high interstitial pressure is avoided by intravenous administration. The choice of HRP is particularly relevant since the possibility of producing artificially high interstitial pressure is avoided by intravenous administration. The choice of HRP is particularly relevant since this molecule has a molecular weight of 40 kD and a diameter of 5mm which is relatively close in size to that of plasma albumin (69 kD and a diameter of 7 nm). The results showed no significant difference in the proportions of widths of the intercellular junctions after administration of HRP or ferritin compared to the control The tracer molecules entered renal lymphatics rapidly after I.V. injection and were transported in part via normal (20 to 30 nm) intercellular spaces between adjacent endothelial cells. <note> 24 </note>
+          </p>
+          <p> Chylomicrons, which have a much larger diameter of approximately 200 nm, and are secreted in large numbers following a fatty meal, are transported into the intestinal lymphatics (lacteals) partly by the intercellular route (Figure 7). <note> 28,43 </note>
+          </p>
+          <head>
+            <hi rend="bold"> 2. Vesicles </hi>
+          </head>
+          <p> The studies described above of intercellular transport simultaneously assessed the role of vesicular transport, and the results imply that vesicular transport is also in important route for translymphatic transport and lymph formation. <note> 20,24,27 </note> Following I.V. injection of HRP, the volume density (i.e., the number) of small vesicles increased significantly and many of the vesicles contained the tracer. <note> 24 </note> The distribution of vesicles within the cytoplasm did not differ significantly from that of controls, thus indicating no major change in the mechanism of vesicular formation and movement. Yang et al. <note> 24 </note> therefore concluded that vesicles, if involved in translymphatic transport, may be stimulated by even a small increase in protein, in this study HRP, in the interstitium. 
+            </p>
+          <p> O'Morchoe et al. <note> 29 </note> developed an <hi rend="italic"> in vitro </hi> model using the canine renal hilar lymphatics to study the temperature dependence of protein transport across the lymphatic endothelium. The rationale behind this study was that if vesicular transport does occur then the rate of protein movement would be temperature dependent, in keeping with the known effect of temperature on vesicles, i.e., a decrease with decreasing temperature. In contrast, if the protein moves only by diffusion between adjacent cells then temperature would have little relative effect on the rate. The results demonstrated that the rate of protein transport was influenced by temperature, being significantly reduced by 49 <amp> per cent sign, </amp> 31 <amp> per cent sign </amp> and 29 <amp> per cent sign </amp> when the temperature was lowered to 4 <amp> degree sign, </amp> 24 <amp> degree sign </amp> and 30 <amp> degree sign </amp> C, respectively, from an initial temperature of 37 <amp> degree sign </amp> C. When the temperature was raised to 48 <amp> degree sign </amp> C, the rate was significantly increased by 48 <amp> per cent sign </amp>. No significant changes in intercellular junctional or vesicular parameters were found between the control lymphatics and those perfused at 24 <amp> degree sign </amp> , 30 <amp> degree sign </amp> and 40 <amp> degree sign </amp> C, thus indicating that the integrity of the tissues was maintained. At 4 <amp> degree sign </amp> C vesicular size decreased, the number of free and luminal surfaces decreased. The authors concluded that the results obtained support the existence of a vesicular lymphatic transendothelial route. 
+            </p>
+          <p> Dobbins and Rollins <note> 28 </note> demonstrated the role of vesicles in chylomicron transport in the intestinal lymphatics (Figure 7). Their results showed chylomicrons present within large pinocytotic vesicles opening to the abluminal side of the endothelia, others were completely enclosed within lacteal endothelia, and some were apparently "emptying" into the lacteal lumen. They concluded that the vesicular route is quantitatively more important than the intercellular route in the translymphatic transport of macromolecules including chylomicrons. 
+            </p>
+          <p> While results have been published in support of both intercellular and vesicular routes of transport across the lymphatic endothelium, the relative contribution of each individual route is not clear. It appears, however, that both routes function simultaneously (Figure 8) <note> 27 </note> and the importance of each may vary in different regions of the body and under different physiological conditions. 
+            </p>
+          <head>
+            <hi rend="bold"> IV. LYMPH FLOW </hi>
+          </head>
+          <p> Lymph flow or circulation can be broken down into two stages. The first stage involves lymph absorption and flow at the lymphatic capillaries via the intercellular or vesicular route. The second stage involves propulsion of the lymph along the larger contractile collecting lymphatic vessels. 
+            </p>
+          <head>
+            <hi rend="bold"> A. LYMPHATIC CAPILLARIES </hi>
+          </head>
+          <p> Different theories have been proposed to describe lymph filling or flow into the lymphatic capillaries. At the lymphatic capillary level there is extensive overlapping of adjacent endothelial cell walls. In addition, numerous anchoring filaments (af) are attached to the abluminal cell wall, except for the inner segments of the overlapped junction (Figure 9). <note> 46 </note> This arrangement creates a flap valve (trap door) effect which is free to move in response to pressure changes. As the interstitial pressure increased above that in the lymphatic lumen, this applies tension on the anchoring filaments, which in turn pull on the attached portion of the lymphatic capillary wall allowing the unsupported portion of the cell wall (i.e., the flap) to swing open into the lumen [Figure 9 (b) and (c)]. In contrast, when the lymphatic capillary luminal pressure exceeds that of the interstitium, the flap is closed against the overlapping cell wall.<note> 46 </note> Therefore, the pressure differentials between the interstitium and the lymphatic capillary lumen play a vital role in lymph formation and flow. 
+            </p>
+          <p> Casley-Smith <note> 41,42,47 </note> proposed an osmotic pull hypothesis to explain lymph flow through the lymphatic capillaries. This theory suggests that compression of the capillaries results in water expulsion out of the lymphatic capillaries into the interstitium through small pores impermeable to proteins. When the compressive force is released, the newly concentrated lymph exerts an osmotic force which draws fluid back into the capillaries via large pores. Considerable doubt has been cast on this theory due to recent studies which showed that protein concentration does not vary with vessel size <note> 48 </note> and that lymph protein concentration is the same as that in the tissue. <note> 49 </note>
+          </p>
+          <p> An alternative possibility, namely the suction theory, has been proposed. <note> 19,50,51 </note> In this case it is argued that an increased in the interstitial pressure will in turn cause the intraluminal lymphatic pressure to rise. If the pressure in the lymphatic capillaries is greater than in the adjacent lymphangion (i.e. the segment between two adjacent valves), then lymph will flow from the capillaries into the lymphagion. Once the pressure within the larger vessel reaches its threshold, an active contraction is initiated in the lymphangion which propels the lymph forward into the adjoining lymphangion. During recovery from the contraction, the pressure within the lymphangion becomes negative and thus draws in further lymph from the capillaries. Consequently, in a type of chain reaction, the pressure within the lumen of the lymphatic capillaries becomes negative with respect to the tissue pressure, thus creating a suction within the lumen which starts the filling cycle over again. 
+            </p>
+          <head>
+            <hi rend="bold"> B. COLLECTING LYMPHATIC VESSELS </hi>
+          </head>
+          <p> In the collecting/larger lymphatic vessels, the walls become progressively thicker due to the appearance of connective tissue and smooth muscle. The thickest walls reveal a trilaminar structure similar to that of blood vessels. The intima consists of endothelium and the media contains smooth muscle cells laid down in one or two concentric layers enabling the vessels to contract and thus propel the lymph upstream. The adventitia is made up of loose connective tissue containing collagen, elastin, and fibroblasts. Small blood vessels and adrenergic nerves which service the needs of the lymphatic wall have been found within the adventitia. <note> 12 </note>
+          </p>
+          <p> All of the collecting lymphatics have a generous supply of valves, which occur at regular intervals, to prevent the backflow of lymph. However, the number and size of intravalvular segments have not been clearly established as they tend to be related to the vessel size. <note> 52 </note> Large variations in the structure of these valves have been reported. Lauweryns <note> 53 </note> suggested a cone- or funnel-like design. Leak, <note> 22 </note> using scanning electron microscopy, found bicuspid valves along the lymphatics made up to two thin leaflets, the surfaces of which are lined with endothelial cells.<note> 22,54 </note> In the smaller lymphatic collecting vessels the valves consist only of endothelium. In the larger vessels, however, valves have several layers and contain elastic fibers. Tricuspid valves have also, on limited occasions, been reported. <note> 19 </note>
+          </p>
+          <p> The propulsion of lymph along the collecting lymphatic vessels is governed by a number of different extrinsic and intrinsic factors. Extrinsic factors include muscle contraction, respiratory movements, and movements of the intestine. It has been shown that lymph flow increases during exercise and muscular activity. <note> 55,56 </note> Running has been shown to increase lymph flow from the leg by approximately 150 to 300 <amp> per cent sign </amp> relative to the control. <note> 57 </note> Browse et al. <note> 58 </note> found that the pressure in the upper and lower ends of the dog thoracic duct was significantly influenced by respiration rhythm and Lee <note> 59 </note> showed that intestinal motility greatly influenced lymph flow from intestines. 
+                </p>
+          <p> Although these extrinsic factors have a role, it is now considered that the intrinsic rhythmic contractions of the valved lymphatic vessels are primarily responsible for the propulsion of the lymph toward the thoracic duct. The strength and frequency of these intrinsic contractions have been related to the rate of lymph flow. <note> 60 </note>
+          </p>
+          <p> The intrinsic smooth muscle contractions of the lymphatic vessels are regulated by three major factors: (i) the transmural vessel distension, (ii) humoral mediators, and (iii) neural mediators. <note> 19 </note> The segment between two adjacent valves i.e., the lymphangion, contracts as a unit with the contraction being stimulated by radial distension. A contraction will only occur when the tension in the wall exceeds a certain threshold value, this value increasing with vessel size. <note> 61 </note> Each contraction lasts for a set period of time and is followed by a period of relaxation. The contractions begin in the lymphagions adjacent to the lymphatic capillaries and spread progressively through each lymphangion towards the thoracic duct. The contractile cycle of the lymphatic smooth muscle has not been extensively examined. However, it seems that there are two separate phases: (i) the diastolic phrase, during which the intervalvular segment is filling, and (ii) the systolic phase, during which the contraction develops. <note> 62 </note>
+          </p>
+          <p> Zweifach and Prather <note> 63 </note> performed a detailed study of collecting lymphatics of the mesentry of the cat and the omentum of the rabbit. The results showed that contraction begins in the smaller branches and spreads progressively to the larger vessels, this process taking 4 to 5 seconds. Between 10 and 18 contraction-relaxation cycles occurred per minute with each contraction cycle lasting on average 3 to 4 seconds. The amplitude of pulsations ranged from 2 to 4 cm H2O in the larger lymphatics and the intraluminal pressure increased gradually with vessel size. 
+                </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/069.00000</textSigle>
+            <title>Northern Ireland: Politics and the Consitution</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Sydney Elliott</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-014$A">
+          <head> Electoral boundaries and vote counting </head>
+          <p> The Government of Ireland Act did not create an independent body responsible for the conduct of elections or the supervision of electoral boundaries. The Northern Ireland Parliament had power to regulate its own elections; but it could not increase the number of members and in any redistribution it was bound to pay due regard to the population of constituencies. For local government election, county boroughs and boroughs could recommend their own ward structure. The county council electoral divisions had to be as nearly equal in population as convenient, with regard to changes since the last census and the pursuits of the urban and rural population. The Local Government Act (NI) 1922 added rateable valuation to the factors to be considered. In addition, the redistribution of Parliamentary seats in 1917 provided a body of practical guidance on procedure. 
+            </p>
+          <p> The adequacy of these provisions was tested throughout the period. Disputes over electoral boundaries were the main feature of the electoral debate between the Unionist government and opposition parties. They emphasized the different expectations over territorial versus communal representation. The detailed nature of the disputes precludes anything other than a cursory review of the main types and periods of dispute. 
+            </p>
+          <head>
+            <hi rend="italic"> The single-member Stormont constituencies formed in 1929 </hi>
+          </head>
+          <p> When it became clear that the Unionist government would abolish PR before the end of the second Parliament, opposition parties demanded a Commission to redistribute seats. Nationalists feared that the opportunity would be taken to reduce their members from ten to six; Labour members asserted that failure to establish a Commission would be proof of an intent to gerrymander. However, the request was rejected in 1927 and when the Bill was introduced in 1929 the Prime Minister Viscount Craigavon (James Craig) stressed his personal responsibility for it. 
+            </p>
+          <p> During the debate there were some claims for communal rather than territorial representation; some Nationalists were willing to accept the termination of PR in return for the guarantee of sixteen seats or representation on the basis of religion. Nationalists claimed that the redistribution scheme gerrymandered Antrim and Fermanagh by taking away a seat from them in Antrim and giving Unionists two seats in Fermanagh. Craigavon replied that it was impossible to create a Nationalist seat of sufficient size in Antrim and that the joint representation of Fermanagh and Tyrone would continue the same as under two PR elections in 1921 and 1925. <note> 8 </note>
+          </p>
+          <p> Nationalist fears were not realised in the 1929 election, and they won eleven seats. During the third reading Joseph Devlin, leader of the Nationalist Party, had stated that it was the duty of the government to ensure that the minority would be worse off under the new scheme. In effect this had been accomplished with some rough justice in Fermanagh and Antrim. If there was gerrymandering in 1929 it was of an honest variety. 
+            </p>
+          <p> From a technical point of view, no constituency lay outside the normal range of plus or minus one-third of the population quota for the forty-eight territorial constituencies or the range within the multi-member constituency from which they were derived. Only two technical issues seem to have occurred – whether to give Fermanagh two or three seats and the West Belfast area four or five seats. Both issues were resolved by favouring the easier course and retaining intact the registration areas of 1920. 
+            </p>
+          <head>
+            <hi rend="italic"> Ward changes in Omagh, Londonderry and Armagh </hi>
+          </head>
+          <p> In the mid-1930s inquiries were held in Omagh UDC and Londonderry County Borough as a result of ratepayers ' associations seeking improved representation. The ratepayers ' associations were thinly disguised and were in effect Unionist. Although their ward plans were rejected in both instances, the effect of subsequent ministry favoured the spirit of the proposals. The proposals for Omagh resulted in a change of party control to Unionist and in Londonderry the three-ward structure ensured a permanent Unionist majority when it would have disappeared in a few years under the five-ward system. <note> 9 </note> In addition, Armagh UDC was dissolved for maladministration in 1934, and when it was returned to council control it was with a boundary extension and a new five-ward structure which reflected the new Unionist majority in the city. 
+            </p>
+          <head>
+            <hi rend="italic"> The failure to establish Boundary Commissions after 1945 </hi>
+          </head>
+          <p> After the Second World War, Northern Ireland did not follow Britain in making provision for periodic boundary commissions for Stormont Parliamentary constituencies. Indeed, the nationalist gerrymander motion became a hardy annual at Stormont. Allegations against Stormont constituencies gradually faded as the smallest constituencies became occupied by opposition party candidates while huge Unionist constituencies built up on the fringes of Belfast. Labour members and some of the Unionists with large constituencies began to demand a Commission early in the 1960s. The principle was accepted in 1966 and an Interim Boundary Commission was created in 1968 to create four new territorial seats to replace the university seats. The Electoral Law Act 1968 created a permanent Boundary Commission for Parliamentary seats but it had not reported before direct rule in 1972. 
+            </p>
+          <p> Allegations against local authority areas persisted. The demand for 'one vote, one value' was part of the civil rights demands enshrined in the shorthand slogan 'one man, one vote'. Boundaries for the new system of District Councils, recommended by the Macrory Report of 1970, <note> 10 </note> and the electoral areas within them, were determined by an independent commission. These single-member units were subsequently grouped into multi-member units when PR was reintroduced in 1973. The Local Government Act (NI) 1972 provided for a Local Government Boundary Commission to report every ten years. 
+            </p>
+          <p> To summarize, the number and intensity of disputes over electoral boundaries made it the main area of electoral grievance. Part of the problem concerned the absence of independent procedures but the main period of dispute occurred before the Second World War when independent bodies did not exist in the rest of the United Kingdom. Although there were allegations of widespread gerrymandering, research enables attention to be directed to specific areas: Londonderry County Borough, Omagh UDC, Omagh RDC and possibly County Fermanagh. The two Omagh decisions may have produced wider consequences for control of the county council. However, claims about electoral boundaries are difficult to disentangle, particularly where there was an expectation that territorial representation should produce what only communal representation was capable of achieving. The experience of Fermanagh after 1973 is a cautionary tale. There, despite all the changes, unionists disputed control in the 1970s, lost it in the early 1980s but regained control in 1989 with a one-seat majority over eleven nationalists. 
+            </p>
+          <head>
+            <hi rend="bold"> The method of election </hi>
+          </head>
+          <p> The Government of Ireland Act 1920 extended the use of STV in multi-member constituencies from local government elections, under the 1919 Act, to elections for the Northern Ireland Parliament. In the debates it was described as one of the safeguards for minorities and the unionist minority in the South and West of Ireland seemed to be uppermost in debate. However, northern unionists opposed the method and wanted to retain the same system as in Britain. James Craig had opposed PR and committed the party to abolishing it at the first opportunity. On the other hand, Nationalists favoured the principle but they had only six members at Westminster and their attention was directed against the principle of two legislatures in Ireland rather than their composition and elections. 
+            </p>
+          <p> The method of election to the Northern Ireland Parliament was guaranteed for a period of three years. However, the 1920 Act did not mention local government and on 31 May 1922 the Local Government (NI) Bill was introduced in the Stormont Parliament to abolish PR in local government elections and return to the previous method and electoral units. The six Nationalist and six Sinn Fein members elected in 1921 were pursuing an abstention policy so that the only opposition to the Bill was from a Unionist Labour member, Thompson Donald. Nationalist-controlled councils issued a resolution of protest but the Bill passed its third reading on 5 July. However, as was mentioned in Chapter 1, the Royal Assent was withheld until 11 September. 
+            </p>
+          <p> Various government statements had encouraged the belief that PR would be abolished for Stormont elections as soon as the three-year statutory prohibition ended in June 1924. However, no action was taken and the 1925 election was also fought using PR. After the election, the Prime Minister came under pressure from the Unionist Party to abolish PR and the Party had lost seats to the Labour Party and other candidates. 
+            </p>
+          <p> The principle of PR was extensively debated in 1927 on a Labour Party motion. Labour regarded abolition of PR as aimed at all minorities, while Nationalists considered that they were the prime targets. In a lengthy and detailed speech the Prime Minister said that he believed in the two-party system and the old method of elections would produce <quote> 'men who are for the Union on the one hand or are against it and want to go into a Dublin Parliament on the other.' </quote>
+            <note> 11 </note> The debate hinged less on the merits of PR than on a disposition to treat the minority well through seat distribution. 
+            </p>
+          <p> PR was abolished by the House of Commons (Method of Voting and Redistribution of Seats) Act (NI) 1929. During the debates the opposition parties expressed diverse views about whom the Bill was directed against. There was less debate on the merits of PR than in 1927 and a greater concern about the consequences of redistributing the seats from the multi-member constituencies. The Bill became law on 16 April 1929 and the 'cross' vote for single-member districts was restored for the forty-eight territorial seats. In the 1929 Northern Ireland Parliament elections thirty-seven Unionists, eleven Nationalists, three Independent Unionists and one Northern Ireland Labour Party member were elected. All the parties previously represented retained representation: Unionists and Nationalists gained over the 1925 results and Labour lost two seats. Apart from an increase in the number of unopposed returns in 1929 there seemed little to choose between the two methods of election. However, the steady increase in the number of independent and unofficial Unionist candidates during the 1930s, culminating in 1938 when more than a quarter of the candidates came from that section, meant that the abolition of PR was aimed at divisions within Unionism over social and economic policy and administrative performance. 
+            </p>
+          <p> The effect of the change to the simple-majority system and single-member constituencies from 1929 to 1969 can be briefly summarized. The two largest parties, the Unionists and Nationalists, both benefited in their share of contested seats and unopposed returns. The Northern Ireland Labour Party and splinter Unionist candidates were consistently underrepresented. Anti-partition Labour candidates consistently benefited from the system after 1938, but this may have been due to the size of the constituencies contested. All other groups were underrepresented in proportion to their share of the votes. 
+            </p>
+          <p> In the post-war period there were motions for the reintroduction of PR in 1947 and 1951. During the Electoral Law Bill debates of 1962 Nationalists sought PR but without success. It was only after 'one man, one vote' had been conceded in the Electoral Law (No 2) Bill 1969 that the call for PR was seriously renewed, to the discomfiture of the government. Every opportunity was taken to press for PR and the issue was debated in March 1971. However, the withdrawal of the SDLP and Nationalists from the House in July 1971 and the suspension of the Northern Ireland Parliament and government on 30 March 1972 terminated the Parliamentary debate. The principle was conceded by the Secretary of State, William Whitelaw, as the means to gain SDLP participation in the District Council and Assembly elections of 1973. <note> 12 </note> The Secretary of State never gave any substantial reason for the change except to say that it was the method that most parties mentioned to him. Several years later he stated that there were expectations that it might enable voters to build up the centre ground in politics. Against a background of party fragmentation the only expected outcome was that the parties would win representation in proportion to their votes and entrench the new divisions. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/070.00000</textSigle>
+            <title>Irish Journal of Sociology</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Teresa Dowling</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-018$A">
+          <head>
+            <hi rend="bold"> Inequalities in Preparation for University Entrance: An Examination of the Educational Histories of Entrants to University College, Cork </hi>
+          </head>
+          <head> INTRODUCTION </head>
+          <p> University students are a highly selected population in that of all those who seek university places in any given year only a proportion succeed. While the selection process is 'objective' in that places are allocated on the basis of examination results, studies of third level entrants have indicated that students from the higher socio-economic groups are over-represented within the higher status (and higher points) faculties (Clancy 1982, 1988). 
+            </p>
+          <p> Most students obtain their places on the basis of achievement in the Leaving Certificate examination. Some achieve entry on the results of the Matriculation Examination of the National University of Ireland (NUI). Indeed, many students seeking places in NUI colleges sit both examinations as the two sets of results may be combined to calculate points in the allocation of places in these colleges. One can thus 'improve' one 's chance of a university place in the NUI by sitting both examinations. 
+            </p>
+          <p> Students usually sit for the Leaving Certificate and/or the Matriculation at the end of a five year post-primary programme. There are, however, schools which take six years to complete the course. Schools offering the longer course tend to be the more prestigious academic secondary schools, many of them fee-paying. There are undoubted advantages to a six year programme. Students are usually older and more mature when sitting the Leaving Certificate. The extra year also permits students to develop academic and other skills of lasting value. Students taking six year programmes sit the same examinations and compete for the same university places with those from five year schools. This must give them at least some advantage in the competition for university places. 
+            </p>
+          <p> In recent years some schools have been given the option of offering an extra 'transition' year to pupils between the end of the junior and the beginning of the senior cycles. This extra year will undoubtedly perform the function of permitting the maturation of students prior to taking the Leaving Certificate. In addition, transition programmes provide all students, those seeking third level entrance and those intending to complete formal education at the end of the senior cycle, with skills and knowledge of a wider and more practical type than would be attained within the traditional curriculum. However, not all schools have sought, or been given, this option. Further, when available within any given school, the transition year may be optional, or may be available to selected pupils only, for example, those who are adjudged too young to proceed to senior cycle, or those who are perceived by the school authorities as being capable of benefitting from it, however this may be judged. 
+            </p>
+          <p> Students failing to obtain a university place, or their preferred place, may re-sit for one or both examinations, on one or more occasions. There are indications that this practice is becoming more popular. In some third level institutions, including universities (though excluding University College Dublin and University College Cork), students are permitted to combine the results of more than one sitting of these examinations for purposes of scoring 'points ', though this practice is to be discontinued as and from 1992. However, students will continue to have a second or further chance to compete for a third level place without penalty apart from an extra year in school and the payment of the appropriate fees. 
+            </p>
+          <p> It might be argued, then, that students competing for university and other third level places to not do so on an equal footing. Some students have prepared for five years, others for six, even seven, as some who repeat the examinations do so following a six year school programme. Students who re-sit on one or more occasions might also be considered to have benefitted from examination practice.
+            </p>
+          <p> The vast majority of Irish children receive their education within 'recognised' post-primary schools. All these schools, including those charging fees, receive government funding, the amount and type being dependent on the type of school. Nonetheless, students at fee-paying schools are charged significantly less than the economic cost of their education as are students who elect to repeat the Leaving Certificate within 'recognised' schools. Thus, much of the extra preparation for third level entrance is paid for from public funds, although it is individuals who benefit. 
+            </p>
+          <p> Students preparing for examinations leading to third level entrance may also seek extra help in one or more subjects. Occasionally, this may be obtained at home, from family or friends, or schools may offer some students additional classes. More commonly, however, such help is obtained outside the family and school from individuals or groups who offer specific examination coaching in one or more subjects. In recent years there appears to be an increase in the number of individuals and tutorial colleges offering specialised individual or small class tuition. The colleges may also run short intensive revision courses in the school holidays, and some also provide a full-time Leaving Certificate course, aimed mostly at students repeating for better results. 
+            </p>
+          <p> None of these groups or individuals receives any state support. They operate as business enterprises, charging relatively high fees on an hourly or yearly basis. We do not know how many students use these facilities, and for what subjects. Nor do we know who uses them, or whether they give students an advantage when competing for scarce third level places. That their numbers appear to be growing and that they are paid for out of individuals ' pockets seems to indicate that at least some people believe that extra tuition is valuable. As a relatively expensive 'optional extra' it is likely that the students who use such facilities are from the more advantaged social backgrounds. They may also be lower ability students, though this is not necessarily the case and we have no evidence to support it. 
+            </p>
+          <p> How do students select from among the various educational options outlined above? Are different patterns evident among students from different social backgrounds? These are the concerns of this study. 
+            </p>
+          <head> METHODOLOGY </head>
+          <p> The study is a pilot study of an exploratory nature. It was limited to Irish students who entered UCC in 1989 and who had competed for their university places through the Central Admissions Office (CAO), that is, those who were awarded university degree places on the basis of 'points '. We thus excluded all foreign students and mature students who are awarded places on a quota basis. Information was collected from students in the classroom using an administered questionnaire. We attempted complete coverage of the population to simplify data collection. 
+            </p>
+          <p> In faculties where first year students follow common courses, the problems of locating students were few. The faculties of Arts and Science posed particular problems. Science students should have proved less difficult to contact than students in Arts as all science students are required to take on or two courses in Mathematics. Coverage of these two classes ought to have given us access to all first science students. As Arts students are not required to take any common subject, we selected two large classes that are timetabled back to back in first year, Sociology and French. Almost 80 per cent of all first Arts students were registered for one or other of these courses and on further investigation we discovered that a high proportion of the remaining students were registered in Applied Psychology. Coverage of these three classes should have provided us with access to over 90 per cent of all first Arts students. 
+            </p>
+          <p> Non-attendance at class proved the greatest obstacle to complete coverage and we were less successful than we had hoped in obtaining information from all the students. The Arts and Science faculties were the most problematic with non-attendance of up to 25 per cent in at least one of the classes we visited. In addition to non-attendance there were some students who refused to complete the questionnaire. The number here were small, however, and it was non-attendance rather than refusals which account for the difference between the numbers we obtained and the numbers in the targeted population. Complete coverage was obtained in Social Science, and almost complete coverage in Commerce (97 per cent). The coverage in the other faculties was: Electrical Engineering 88 per cent, Medicine 87 per cent, Law 82 per cent, Dentistry 81 per cent, Civil Engineering 80 per cent, Arts 66 per cent and Science 63 per cent. In all we obtained information from 77 per cent of the targeted population, which is three hundred and sixteen students short of complete coverage. We feel the coverage is adequate for a pilot study. 
+            </p>
+          <head> THE RESULTS </head>
+          <p> Information was collected from 1058 students, all of whom entered UCC in 1989 and had competed for their places through the CAO. Only students who had received their second level education within Ireland were included. Over 70 per cent of the students were from Cork city or county; 21 per cent were from the rest of Munster, 6 per cent were from Leinster and the remainder came from Connaught and Ulster, including the six counties of Northern Ireland. They ranged in age from seventeen to twenty-one. The mean age was eighteen. More than half the students were women (59.6 per cent). 
+            </p>
+          <p> The students came from all social classes (see Table 1), but as in previous studies of university entrants the higher social classes were over represented (Clancy, 1982, 1988). Seventy-five per cent of our respondents came from families where the chief earner was in a non-manual job, or was a farmer with over 50 acres. Twenty-eight per cent of students were in receipt of higher education grants and 1.6 per cent held scholarships. 
+            </p>
+          <EdCm> Table 1 inserted </EdCm>
+          <p> Most students, then, depended on their parents to provide the finance for their education, though a small number of students supported themselves wholly or in part. Over sixty percent were from families where neither parent had received third level education. 
+            </p>
+          <p> Previous studies of third level entrants found that students from secondary schools were more likely to enter universities than those who had been educated at community, comprehensive or vocational schools. Our population displayed the same pattern. Eighty-five percent of our respondents had attended secondary schools, 12 per cent had been to community or comprehensive schools, and a mere 3 per cent had been to vocational schools. Almost 25 per cent of all students had attended fee paying secondary schools. We did not calculate the transfer rate for each type of school but we found that 23.6 per cent of all first year entrants to UCC in 1989 had attended one of three fee paying schools in Cork city. We estimate that between them these three schools cater for just under 10 per cent of the post-primary pupils in the city. Further, an examination of the schools attended by students from Cork city indicate that students from non-fee paying schools in predominantly middle class areas of the city are over represented in our population. 
+            </p>
+          <p> We asked students to indicate the length of secondary programme they had followed, the number of times they had attempted Leaving Certificate and/or Matriculation, whether they had repeated any year during their post-primary education, the amount and type of extra tuition they had received (if any), and the subjects in which it was obtained. They were also asked to indicate the cost of any coaching they had received. With this information, we were able to identify the ways in which students prepared to compete for university places. 
+            </p>
+          <head>
+            <hi rend="italic"> Length of post-primary school programme </hi>
+          </head>
+          <p> Seventy-three percent of the students had attended schools which offered a five year post-primary programme. One in five of these students, however, had spent six years at post-primary level prior to university entrance. Students in five year programmes extended their stay in school in one of two ways: (1) they repeated the Leaving Certificate (68 per cent) or (2) they opted to repeat a year earlier in the post-primary programme. Students who took this latter option usually repeated 5th year, though there was a small number, seven in all, who had retaken the first year in post-primary school. 
+            </p>
+          <p> Two hundred and seventy-seven, or 26.2 per cent of the total population, had followed a six year post-primary programme. Here, too, there were students who had extended their post-primary education by at least one year. The number doing so was small (33) but it amounts to 12 per cent of all students from six year programmes. As with those in five year schools two methods of extending the programme were employed. Two thirds of these 'seven year' students spent the extra year repeating the Leaving Certificate, the others, with one exception, repeated 5th year. 
+            </p>
+          <p> In all, 421 students spent six or more years at post-primary level. This is 40 per cent of all first year entrants to UCC in 1989. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/076.00000</textSigle>
+            <title>Journal of Social Policy</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Eithne McLaughlin</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-013$A">
+          <head> Part time work </head>
+          <p> From the point of view of unemployed men 's labour supply, 'flexibility' about moving off the unemployment register and into part time work cannot be separated from the question of pay flexibility or inflexibility. At the time of study, family income supplement could only be claimed if the person was working more than 30 hours per week. Since April 1988 family credit can be paid to those working more than 24 hours per week. This means that a man (or woman) could now take a 'part time' job of 24-30 hours per week and claim family credit whereas he or she could not have claimed family income supplement. However, this would entail a very heavy reliance on family credit: that is, it would make up a high proportion of total income (40-50 per cent, for example). As the previous section showed, this is not a situation which is perceived positively by unemployed people. Family credit as a 'top-up' of <amp> pound sign </amp> 10- <amp> pound sign </amp> 20 a week is an acceptable risk, but family credit as half of one 's income is perceived as a high risk strategy. 
+            </p>
+          <p> Men could, of course, take up part time work and remain on income support. In doing so, their earnings are then considered as a top-up of benefit and come under the disregarded earnings provision of income support. Nationally, and in this study, use of disregarded earnings provision is low (11 per cent in this study and about 5 per cent of unemployed people on income support nationally in 1989, (DSS, 1989). The net effect of male unemployment in these couples was to discourage wives from taking up or keeping on part time work and to discourage men from taking up part time work (less than 24 hours a week) while unemployed. 
+            </p>
+          <p> At the time of this study, unemployed couples could each earn up to <amp> pound sign </amp> 4 per week net of work expenses before their supplementary benefit was affected, and thereafter deductions were pound for pound. Under income support, this has since been raised to <amp> pound sign </amp> 5 a week each, inclusive of work expenses, for the first two years of unemployment, and a joint <amp> pound sign </amp> 15 a week thereafter. Most couples had some basic knowledge of the arrangements for disregarded earnings, though they were much less likely to know that under supplementary benefit the figure was net of work expenses. The reason why most did not exploit disregarded earnings was that the return was too small particularly when weighed against possible disruptions to benefit receipt. Most people felt it was unlikely that they could find a job paying just the level of disregarded earnings and thus were aware that they would have to take a job paying more and have deductions from their benefit. Some had done this in the past and they had experienced a considerable amount of 'hassle' from their local social security office as a consequence. Benefit was totally stopped while proof of earnings were sought, deductions greater than earnings minus <amp> pound sign </amp> 4 (or more rarely <amp> pound sign </amp> 4 plus work expenses) were made, and so on. Because of the low incomes claimants had and the fragility of managing on low incomes, such disruptions were serious matters indeed and experience of them prevented the take-up of subsequent part time work. Even those without direct experience of such 'hassle' were aware that any change of circumstances carried a high risk of disruption in the receipt of benefits, and could readily imagine the 'hassle' that would ensue from earning more than the disregards limit. The net gain from such 'hassle' was considered too low when weighed against the high risk of benefit disruption. 
+            </p>
+          <p> Not only did this result in very few families enhancing their living standards by combining some earnings with benefit receipt, but it also had an indirect effect on couples ' labour supply in relation to other forms of work. As the previous section has shown, the strategy adopted was one of the 'family wage' earned by one partner, with possibly a relatively small top-up of in-work benefits. Because wives were generally not employed when their husbands were unemployed, husbands were attempting to find full time jobs which would pay enough to keep the whole family rather than finding lower paid full time or part time jobs supplemented or complemented by wives ' earnings. Such a strategy thus raised the wage (or income) sought by unemployed men. It was difficult for the families to envisage adopting a strategy based on two low or part time wages because this would have required both partners to find jobs simultaneously. 
+            </p>
+          <head> Temporary, seasonal and casual work </head>
+          <p> Labour supply flexibility of unemployed men and women in respect of temporary, seasonal and casual work was also affected by the structure and administration of the social security system. Skilled men and men in rural areas in particular were aware that there were opportunities for full time work of short duration, usually one to three weeks. Women were aware that there were temporary, often seasonal (either Christmas or summer/holiday relief, typically 4-8 weeks), work opportunities, both full time and part time, which they were not seeking. Why was this the case? 
+            </p>
+          <p> If such work was not to be treated as disregarded earnings (in the same way that regular small amounts of part time work are), then the only option was to sign off benefits completely, work for a short time, and then make a fresh claim. There were a number of problems with such a strategy. Firstly, because such work was of short durations (and often low paid), in-work benefits could play no role from a practical point of view. Secondly, new claims for income support can and frequently do take several weeks to be processed (rarely, at least in the experience of these claimants, are claims processed and paid within one or two weeks). 
+            </p>
+          <p> As a result, signing-off and signing-on again carried a high risk of being followed by a period with no income. The earnings offered by casual and temporary work were unlikely to be high enough to carry the family through an 'incomeless' period, and the net return from such an exercise was likely to be a loss, zero or very little gain indeed. 
+            </p>
+          <p> Two alternatives to this strategy were possible, the first of which was to remain nominally on income support and have one 's earnings disregarded. As with part time work, this carried a high risk of loss of benefit and/or delay of benefit accompanied by only a small net return. The second alternative was not to declare such work. This alternative had been adopted by a small number of people in the study: 5 out of 110 had some undeclared earnings and 3 more had had undeclared earnings in the past. Most undeclared earnings were either highly variable from week to week or took the form of occasional lump sums for specific jobs. In contrast, the arrangements for disregarding earnings were very inflexible indeed, calculated as they are on the basis of regular weekly earnings, of the same amount each week. 
+            </p>
+          <head> Summary </head>
+          <p> The position as regards labour supply flexibility of unemployed men and the wives of unemployed men can be summarised as follows. Men and women were flexible as regards the type of work they were prepared to do. But men did not seek or apply for 'women 's jobs'. The main reason they did not do so was the very low pay involved: 'women 's jobs' generally paid less than even unskilled 'men 's jobs' in the same economic sectors. Men did apply for low paid jobs and they applied for jobs which paid less than their reservation wages and less than average earnings for the type of work concerned. They did not, however, apply for very low paid full time jobs. The men attempted to earn close to a family wage, with in-work benefits acting as a top-up or small supplement, not as a 'partner' to earnings, and women 's earnings did not enter the picture at all. This was because women were not likely to work part time while their husbands were unemployed because of the low level of earnings rules and the risks of benefit disruption if more than the limit was earned, while women were unlikely to achieve anything near to a 'family wage' from full time work. Flexibility in respect of full time, part time and short duration work was thus constrained by the structure of benefits. The result was that, despite the fact that most men and women wanted to work and barely managed on their benefit incomes, the majority of families had no work or earnings whatsoever, were largely excluded from the 'flexible' work forms increasingly prevalent in their local labour markets, and were unable to respond positively to the higher level of demand for female than male labour. 
+            </p>
+          <head> THE ROLE OF SOCIAL SECURITY POLICY IN THE 1990's LABOUR MARKET </head>
+          <p> Major constraints on flexible participation in the labour market therefore arise not from the intransigence or inflexibility of claimants but from the reform, including the April 1988 social security reforms (which the relevant Green Paper hailed as the most fundamental review since Beveridge), has done virtually nothing to remove these inherent rigidities. Policy for the foreseeable future appears to be based largely on what has gone before, pervaded by a distinction between full time and part time work which has become more and more artificial. 
+            </p>
+          <head> More of the same </head>
+          <p> In the last two reviews of supplementary benefit, the main constraint on encouraging part time work by extending provision for disregarded earnings has been expressed by government as the danger of undermining incentives for full time work. The result has been that the concern not to undermine full time work incentives has in fact undermined part time work incentives – in some labour markets the only incentives that have any practical meaning – with the result that few unemployed families do any paid work. 
+            </p>
+          <p> The higher level of disregard of <amp> pound sign </amp> 15 per benefit unit after 2 years of unemployment introduced in 1988 is in nominal terms more generous than the previous disregard, although not in real terms (Bradshaw, 1985), and work-related expenses can no longer be discounted. For those (mainly wives) doing regular part time work the higher disregard will mean that fewer hours need be spent working for nothing, although <amp> pound sign </amp> 15 represents no more than a day 's work and 2 years have to pass before even this much is retained. For those, usually men, whose earnings take the form of episodic lump sums exceeding the value of the disregard in the week they are earned, the incentive not to declare them or not to participate in such work will hardly be any less. 
+            </p>
+          <p> In the context of increasing labour market flexibility and increases in long term unemployment, a more appropriate policy response would be to calculate disregarded earnings over much longer periods in recognition of the fact that it is not always possible to earn small amounts every week. For those who are able to take up occasional work opportunities as they arise, such a system would allow them to support themselves from earnings when work is available without sacrificing the support of benefit when it is not. If that were the case, some undeclared earnings might be regularised and brought into the open. 
+            </p>
+          <p> In addition to the marginal extension of disregards of part time work, a second theme in recent policy has been the promotion of in-work benefits. This promotion of in-work benefits was foreshadowed in 1988 training White Paper (DE, 1988, p.31) which identified the greater use of these benefits as a source of public expenditure savings by encouraging more of the unemployed to consider low paid work with earnings supplemented by benefits. The aim, then, is to reduce the level of wages sought by unemployed people with children by encouraging the view that wages are not the only component of in-work income. Claimant advisers in the Employment Service have been given the task of promoting the consideration of in-work benefits by unemployed people and an extensive television and poster advertising campaign began in August 1988. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/078.00000</textSigle>
+            <title>Software Applications in Electrical Engineering</title>
+            <domain>LerTec</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Vincent Fusco</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Southampton</idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-031$A">
+          <head>
+            <hi rend="bold"> AN OVERVIEW OF THE HIGH FREQUENCY CIRCUIT MODELLING USING CONCURRENT PROCESSING TECHNIQUES in: Silvester, P. P., "Software Applications in Electrical Engineering", Montreal: McGill University, 1993. </hi>
+          </head>
+          <head> V.F. Fusco </head>
+          <head>
+            <hi rend="italic"> Microwave Research Group, Department of Electrical and Electronic Engineering, The Queen 's University of Belfast, Belfast, BT9 5AH, UK </hi>
+          </head>
+          <head> ABSTRACT </head>
+          <p> In modern high frequency electronic design there is often a requirement for interactive CAE tools. The result of the ever increasing demands placed on these tools is that the cpu time required for circuit analysis is often prohibitively long. This paper presents a review of some of the methodologies involving parallel computing techniques that are employed for the solution of CPU intensive high frequency electromagnetic field and circuit problems. The limitations and advantages of these techniques are discussed. 
+            </p>
+          <head> INTRODUCTION </head>
+          <p> In modern high frequency electronic circuit design problems there is often a requirement for interactive CAE tools. This is increasingly important as circuit functionality or technological implementation becomes more complex. This is particularly true for monolithic microwave integrated circuit, MMIC, design, where the complex parasitic interaction between components has a first order effect on the quantitative prediction of circuit behaviour by computer simulation. The result of the increased demands placed on CAE software by such applications is such that the cpu time required for circuit analysis is often prohibitively long. One way of overcoming this problem is to reduce the total elapsed simulation time by partitioning the computational load through the combined use of CPU efficient concurrent computing algorithms and multiprocessor hardware. This paper presents a review of the application potential that exists for concurrent processing for the solution of typical design problems that are encountered at RF and microwave frequencies. 
+            </p>
+          <p> For example many problems in the area of electromagnetics can be considered as follows: i.a pre-processing stage; where the problem geometry is defined ii. a matrix fill stage; here the mathematical relationships governing individual matrix elements are computed iii. a solve stage; where the primary field elements of interest are computed iv. a postprocessing stage; where secondary field parameters are generated and presentation of data occurs. 
+            </p>
+          <p> As the requirement for more detail in the computer simulation, for example in monolithic microwave integrated circuit design [l] becomes more important or as circuit complexity increases then it is essential that more than one analysis per design be carried out. This is important so that non-recurrent engineering costs at the design phase be reduced. For example in a finite element formulation when performing an analysis, a small change made to an initial design by making a new mesh can be quick and looking at the result even quicker, but intermediate processing time remains constant. Therefore it is desirable to reduce analysis time, and then to minimise the number of analyses made. 
+            </p>
+          <p> The problem then is to identify which parts of the problem could benefit from application of multiprocessor computing techniques and which parts are best done serially. The problem geometry and material definition phase (i) together with the post-processing phases (iv) are usually treated as sequential. 
+            </p>
+          <head> DECOMPOSITION STRATEGIES AND MACHINE TYPES </head>
+          <p> Problems generally exhibit a wide degree of variability in the amount of parallelism that is evident in the problem itself. 
+            </p>
+          <p> In developing a concurrent program one is faced with the following tasks [3]: (i) being able to express parallelism (ii) having work spread across multiprocessors (iii) reducing cross processor communication (iv) satisfying any real time constraints (this last point will not be further discussed other than implicitly in terms of speedup relative to sequential program variants) 
+            </p>
+          <p> In (i) parallelism in a problem can be domain based. Here the problem is decomposed spatially, the resulting pieces are described and manipulated independently and then the pieces reassembled to form a description for the entire problem. Alternatively the problem could be decomposed on some algorithmic criteria such as the concurrent evaluation of the many independent terms needed to fill a matrix. Points (ii) and (iii) suggest that any algorithm designed will have to reflect the topological constraints imposed by the target hardware. Thus the best algorithm for one type of machine architecture may be totally unsuitable for another. 
+            </p>
+          <p> Parallel Computing Machine architectures may be classified according to Flynns Classification [4]. This classifies a parallel architecture according to a specification of single 'S' or multiple 'M' operations in its instruction stream 'I' and data stream 'D'. This results in the four letter acronyms, SIMD Single Instruction Multiple Data and MIMD Multiple Instruction Multiple Data. The memory in a MIMD machine can be either shared between processors distributed locally to individual processors. Both machine types have inherent characteristics which are important to recognise when developing concurrent algorithms. For example in an SIMD machine if the calculation of a quantity does not rely on the completion of a calculation elsewhere in the hardware array then vector processing can occur at speeds limited only by memory access time. Thus in the limit of zero time per vector operation the throughput of the system will be defined by the sequential, computational requirements that exist within the problem. With MIMD machines more complex operations can occur in parallel. However synchronisation adds a source of efficiency loss due to processor latency. When concurrent techniques are applied to the problems of interest to high frequency problems disappointing results often occur primarily due to the conditions cited above. 
+            </p>
+          <head> APPLICATIONS AND EXPERIENCE </head>
+          <p> Table 1 presents a review of some applications of concurrent programming methods to electromagnetic field problems. The review presented is in no way definitive, its purpose is to show the diversity of numerical EM field methods that have been mapped into concurrent algorithms. The main topics defined above are repeatedly addressed in this table, i.e. matrix fill, matrix solve, choice of hardware and language and resultant algorithm efficiency. Three broad classes of activity arise on inspection of this table. 
+            </p>
+          <p> The first is parallelization of already established code [5], [6]. This approach generally tends to be disappointing due to the complexity of identifying code sections which can be easily parallelized. The second is coding of techniques in which large matrix fill time is expected due to myriad complex but independent operations being necessitated [7], [8], [9]. This generally tends to be successful due to the localised nature of the computations involved. The third is in the solution of the resultant systems of equations [51, [8], [9], [12], [16], [17], [19], [21] either by direct or by iterative solution methods. The degree of success of this activity depends on the nature of the methods employed. Fourth the variety of hardware options and language derivative available is bewildering. In concurrent algorithms the identification of performance is a difficult proposition. Principally this is due to the subtle nature of the hardware software partitioning effects inherent in the programming task. This makes the ultimate success of concurrent codes in terms of speed advantage extremely critical on choice of hardware and hardware connectivity. The fifth and most dominant feature of Table 1 is the number of workers who have adopted spatial decomposition as the primary strategy for parallelizing specific problems [51], [71], [11], [14], [l8], [19]. The details of the various strategies for algorithmic decomposition are problem specific and will not be further pursued. Finally only very few problems are truly parallel with minimum communication requirements so that linear speedup with processor addition can be attained [20]. 
+            </p>
+          <head> SPATIAL DECOMPOSITION </head>
+          <p> Spatial decomposition appears to be an important theme which occurs in many concurrent algorithms. The principle technique is to reduce a system into its constitutive parts overlapping on their boundaries and to allocate each part to a separate processor. Computational time and memory requirement are improved and additionally subsystems can be individually modified under change of stimulus or structure without the need for global reformulation. With this method the only information to be passed between processors occurs along these spatial boundaries, all other calculations pertaining to each subdomain are computed locally. Eventually a global solution for the problem can be achieved. Krons [2] work suggests a formal method for defining the necessary tears and methods of reassembly. The author has exploited Krons tearing techniques supplemented with Krons circuit analogs of Maxwells equations [27] on arrays of MIMD processors. The resulting method termed the Diakoptics Network Modelling Method [28], has been used very successfully to solve field problems associated with planar microwave MMIC structures in a computationally efficient way. This work suggests that the actual connectivity of individual processors as a tree, pipeline, torus etc. and also the selection of the number of processors used must be done on individual merit. Again this observation suggests that the actual detail of the concurrent algorithms developed will depend to an extent on programmer experience and preference. One interesting and recurrent observation is that for many problem formulations small numbers of MIMD processors work best. 
+            </p>
+          <head> ALGORITHMIC DECOMPOSITION </head>
+          <p> In algorithmic decomposition the structure inherent within the equations governing the problem or the order in which they are to be solved is exploited. Algorithms like TLM [10], [13] appear to decompose best when the algorithm used is based on mimicking the basic scattering process. Here SIMD machines work at best. Consider now different methods of solving non-linear circuit problems of the type relevant to high frequency circuit designers. Sobhy [29] decomposed the time domain circuit equations prior to solution resulting in a novel scheme whereby any linear or non-linear set of circuit equations can be mapped to four processes. One represents Kirchoffs Current Law, another Kirchoffs Voltage Law, a third the network tree processes, t, (<EdCm> equation inserted </EdCm>) and last the co-tree process, c, (of the form <EdCm> equation inserted </EdCm>). With this formulation it is (i) theoretically possible to solve a nonlinear problem in the time domain without iteration (in practice some iteration is needed because of loop stabilisation requirements), (ii) optimise the network response without reformulation of the equations. The second point is particularly useful if the circuit approach and electromagnetic field approaches are to combined to form advanced hybrid field/circuit simulation, see next section. 
+            </p>
+          <p> Algorithmic decomposition may also be usefully applied in the design of concurrent circuit analysis programs that use the Harmonic Balance Method [30]. The QUB microwave research group is currently addressing this problem with some interesting findings. The first is that harmonic balance uses independent linear and non-linear circuit evaluations (based on spatial decomposition). In addition the network response to a frequency vector can be independently generated for each frequency. Finally the optimisation procedure used to enforce the interface conditions at linear non-linear circuit partition boundaries has potential for further parallelization. 
+            </p>
+          <head> HYBRID EM FIELD / NON-LINEAR CIRCUIT SIMULATION </head>
+          <p> If advanced circuit design methods for high frequency electronics are to advance into the regime of 'right first time' design for MMICs such that MMIC custom cell placement effects are to be incorporated in a quantitative fashion; then a new class of circuit simulator is required [32]. Attempts at combining EM field mapping and non-linear circuit elements using conventional methods soon run into computational time and memory usage difficulties [31]. Presently circuit models are used to assist the design/simulation activity with an attendant loss of accuracy (sometimes to the point of losing quantitative prediction). However by exploiting concurrent techniques for circuit simulation with those of electromagnetic field simulation it is conceptually possible to resolve the computational difficulties stated above. 
+            </p>
+          <p> Preliminary work at QUB in this new area of activity appears promising. An interesting outcome has been to show that once the designer is relieved of the difficult tasks of quantification and minimisation of deleterious first order effects such as parasitic component coupling in MMIC design, then the requirement for ultra conservative design be relaxed. In this way confidence to develop new circuit types can be evolved due to the additional simulation support presented by such new concurrent CAE tools. 
+            </p>
+          <head> CONCLUSIONS </head>
+          <p> It has been demonstrated that high frequency electronic problems can be solved with varying degrees of success using multiprocessor hardware and concurrent extensions of classical high level languages. It is also evident that spatial domain decomposition is a much favoured method for parallelization with algorithmic decomposition generally being more difficult to achieve. Unlike sequential algorithms parallel algorithms are defined by the hardware on which they run. Also the variety of language and hardware types in use make direct comparison of performance difficult. Finally work on concurrent non-linear circuit solvers is less mature than that for EM field solvers and up to now the important class of hybrid non-linear circuit/EM field simulators has remained virtually unexplored. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/079.00000</textSigle>
+            <title>Artificial Intelligence and Cognitive Science</title>
+            <domain>LerTec</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Barry Smyth, Padraig Cunningham</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI" />
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-039$A">
+          <div id="W2A-039$B">
+            <head>
+              <hi rend="bold"> Complexity of Adaptation in Real-World Case-Based Reasoning Systems </hi>
+            </head>
+            <head>
+              <hi rend="bold"> 1 Introduction </hi>
+            </head>
+            <p> Case-Based Reasoning (CBR) is a reasoning method that uses experiential knowledge, in the form of cases, to solve problems. When faced with a new problem a CBR system will retrieve a case that is similar, and, if necessary, adapt it to provide the desired solution. Its current popularity as a problem solving paradigm is representative of the shift that has occurred in automated problem solving research; researchers are beginning to move from simple, "toy" domains to complex, real world domains. With this move has come a recognition of the many inadequacies of traditional problem solving approaches, and assumptions previously deemed reasonable have proved invalid in complex, dynamic real world domains. Case-based reasoning methods have proved useful in dealing with many of these problems and have had considerable initial success in real world problem solving endeavours.
+                </p>
+            <p> Researchers have organised problem solving into three main classes. In order of increasing complexity, these are: <hi rend="italic"> simple, routine, </hi> and <hi rend="italic"> innovative </hi>. Simple problem solving activities are characterised by domains whose simplicity facilitate solution generation in a fairly straightforward fashion; there is a relatively direct inference path from problem specification to problem solution. With routine problem solving, domains are more complex and often incomplete, problem specifications are conceptually quite distant from their solutions, and additional computational expense is incurred due to conflicts between dependent domain objects. The most difficult activity, innovative problem solving, is identified by patchy domain models, intricate solution paths through the problem-space, and a considerable amount of backtracking due to interaction problems. 
+                </p>
+            <p> The aim of this paper is to characterise the relationship between case-based reasoning and problem solving tasks of differing complexity. This relationship is discussed in detail in the next sections. Sections three, four and five solidify this discussion by introducing three real CBR systems concerned with simple, routine, and innovative problem solving. 
+                </p>
+            <head>
+              <hi rend="bold"> 2 Problem Solving Complexity and CBR </hi>
+            </head>
+            <p> Our perspective on problem solving is concerned with search-based problem solving techniques. Such problem solvers search a space of "world models" or "problem states" (the problem-space) to find one in which all the problem goals have been achieved (the goal state). Search proceeds through the problem-space by the application of state-transforming operators. The task of the problem solver is then to find some sequence of operators that transform the initial state into the goal state. The complexity and cost of automated problem solving is well studied and there are many ways that it can be estimated. The classic measure is the amount of search which has to be carried out in developing a solution to a problem. 
+                    </p>
+            <p> Essentially, there are two search related problems associated with conventional problem solving methods. The first, which we term the <hi rend="italic"> operator chaining problem </hi>
+              <note> 1 </note>, is basically the problem of searching forward through the problem-space to find the appropriate sequence (chain) of operators with which to solve the target problem. Relieving this problem has been (and still is) the objective of much research and has resulted in a range of relatively successful techniques (e.g. heuristic search, hierarchical planning, least commitment strategy, goal regression etc. ). Further computational complexity arises from the <hi rend="italic"> operator conflict problem </hi>
+              <note> 2 </note>. As a planner interacts with its domain it receives a stream of conjunctive goals. Were these goals independent of one another the cost of problem solving would be linear with the number of goals. The reality is somewhat different. Operator conflicts can result in unfavourable interactions between goals. Under such conditions the problem solver must backtrack over earlier work in order to plan a new solution which avoids these interactions. If somehow the problem solver could learn specific sequences of actions that overcome interaction problems in certain situations, the cost per goal could be reduced in the long run. 
+                    </p>
+            <p> Case-based reasoning methods attempt to address both of these problems. By constraining the problem-space search, it reduces the operator chaining problem; the retrieval of a similar case constitutes a considerable 'jump' into the problem space thereby eliminating many potential routes from the search. Furthermore, CBR is potentially a more efficient constraint method than conventional approaches (e.g. heuristic evaluation etc.) whose scope is more local, pertaining to individual problem space states rather than whole areas. Backtracking due to bad interactions may also be avoided, thereby relieving the operator conflict problem. Effectively, cases can be viewed as 'canned' solutions where operator conflicts have been resolved in certain well defined situations As long as the retrieved case is sufficiently similar to the target relatively few conflicts should arise due to modifications made during adaptation. 
+                    </p>
+            <head>
+              <hi rend="bold"> An Overview of CBR </hi>
+            </head>
+            <p> In CBR, problem solving knowledge is characterised as a set of episodes each representing the solution to a specific problem situation. A new problem (the <hi rend="italic"> target </hi>) is solved by retrieving a similar episode (<hi rend="italic"> base case </hi>) from memory, and its solution is then modified to conform with the target situation. Cases are represented by features and relationships and case retrieval depends on matching these case representations. It can be seen from the following description of the stages in CBR that the retrieval stages is a two stage process:- 
+                    </p>
+            <p>
+              <head>
+                <hi rend="bold"> Representation:</hi>
+              </head>: Cases are represented by features and operators (relationships). The features may be surface or abstract features and typically the more predictive features will be selected for indexing. 
+                    </p>
+            <p>
+              <head>
+                <hi rend="bold"> Base Filtering </hi>
+              </head> : A small number of candidate episodes which are considered contextually similar to the target situation are selected from the case base. The case base will often be organised as a discrimination network (D-net) to facilitate this. 
+                    </p>
+            <p>
+              <head>
+                <hi rend="bold"> Case Selection / Mapping </hi>
+              </head>: This second stage will select a case from this candidate set based on a more detailed comparison of the cases. A mapping between the base and target cases may also be produced at this stage. 
+                    </p>
+            <p>
+              <head>
+                <hi rend="bold"> Adaptation </hi>
+              </head> : Once the best case from the case base has been selected it must be adapted to fit the problem in hand. In the simplest situations, for instance diagnosis, this adaptation may be trivial and the base case may apply without modification. Adaptation may be very complex in more difficult problem domains, e.g. non routine design. 
+                    </p>
+            <p>
+              <head>
+                <hi rend="bold"> 2.2 A CBR Perspective on Complexity </hi>
+              </head> Earlier we introduced the notion of a number of types of problem solving: simple, routine, and innovative. In fact, we can view these as a continuum of problem solving tasks (Figure 1) organised in terms of computational complexity. As illustrated, the relative contribution of the operator chaining and operator conflict problems varies across this continuum. Due to the simplicity of their domains, simple problem solving tasks incur the bulk of their cost from the operator chaining problem; the lack of domain complexity leads to few conflicts so little time is spent backtracking. At the other end of the continuum, the complexity of the domains of innovative problem solving tasks results in the operator conflict problem being very prominent (and expensive to resolve), with proportionately less time spent on the operator chaining problem. 
+                    </p>
+            <percent> Figure 1 </percent>
+            <p> The basic tenet of CBR is that, rather than solve a problem from first principles, it may be easier to retrieve a similar problem and transform the solution to that problem. In Figure 2 we attempt to illustrate these trade-offs graphically. SP' represents the specification for a new problem and SL' is the solution to that problem. FP' represents the search process that establishes this solution from first principles – the task we wish to avoid. A CBR solution is worthwhile if the retrieval task R, and the adaptation task A are simpler than FP'.
+                    </p>
+            <EdCm> Figure 2 </EdCm>
+            <p> In the later sections of this paper we will examine three CBR systems that differ in the complexity of the transformation task A:- 
+                    </p>
+            <p>
+              <head>
+                <hi rend="bold"> Substitution Adaptation: </hi>
+              </head> : This is the simplest type of adaptation and merely involved substituting some of the parameters in the solution. 
+                    </p>
+            <p>
+              <head>
+                <hi rend="bold"> Transformational Adaptation: </hi>
+              </head> : This adaptation is more complex and will involve structural changes to the solution.
+                    </p>
+            <p>
+              <head>
+                <hi rend="bold"> Generative Adaptation: </hi>
+              </head>: This is the most complex adaptation and is not perfectly represented by the diagram. The adaptation process involves a rework of the reasoning process FP in the context of the new problem situation represented by SP'.
+                    </p>
+            <p> From a case-based reasoning perspective there is a relationship between the complexity of the problem solving task and the complexity of the CBR adaptation process. CBR systems concerned with simple problem solving tasks will typically require simple, substitutional adaptation; the retrieved case will typically be very close to the target and consequently will require only very basic substitutive adaptation, with little or no chance of bad interactions occurring. With routine problem solving tasks, the retrieved case, while being similar to the target, will probably require substantial modification possibly changing some structural elements of the retrieved solution (transformational adaptation), and innovative problem solving tasks extensive modifications are necessary during adaptation so interactions are unavoidable and difficult to resolve. To accommodate this adaptation complexity it is generally necessary to augment cases with detailed knowledge such as the reasoning trace structures of Carbonell 's Derivational Analogy. 
+                    </p>
+            <head>
+              <hi rend="bold"> 3 Rachman: Substitutional Adaptation </hi>
+            </head>
+            <p> Simple problem solving tasks are characterised by well-defined domain models, and a relatively direct inference path from problem specification to problem solution. Case-based reasoning methods are particularly well suited to such tasks as there is often a rich set of cases to draw upon during problem solving. The retrieved case is typically very similar to the target problem and consequently the adaptation problem is relatively uncomplicated; in general modifying the attributes of solution elements will suffice without the need to change the overall solution structure. 
+                    </p>
+            <EdCm> Figure 3 </EdCm>
+            <p>
+              <head>
+                <hi rend="bold"> 3.1 A Brief Overview of Rachman </hi>
+              </head> Figure 3 shows two example cases from a case-based system called Rachman that can predict the selling value of a house given some details about it. The system contains a large case base of houses and their selling prices and, given a house description, it will retrieve a case or a set of cases describing similar houses and their selling prices. These prices can be adjusted depending on differences between the target and base cases to estimate the price of the target house. This system is comparatively straightforward but is equivalent to a host of potential CBR applications, for example loan risk assessment and help-desk assistants. The complexity of this problem is greatly reduced by having a well populated case base, so that good matches can be found and the required adaptation is not difficult.
+                    </p>
+            <p> The cases are divided into two sets of features, the index features and the internal features. The index features are the most strongly predictive features and form the basis for the D-Net (Figure 4). The main problem with the D-Net approach is that it forces a strict ordering of the index features, in this example the cases might be organised first under location, then number of bedrooms, etc. However, different users may have different priorities; some, for instance, might consider the number of bedrooms to be more important than location. In addition, it will not be possible to retrieve matches for cases that have missing features as the retrieval process will not be able to search below the level of that feature in the network.
+                    </p>
+            <p> These problems are largely solved by introducing redundancy into the D-Net. This means that the network supports alternative orderings on the index features (see Figure 4). The extent to which redundancy can be introduced into the network is limited because the size of the network grows in proportion to the number of orderings supported. Retrieval in Rachman returns clusters of cases and the cases are ranked according to their frequency of occurrence in these clusters. 
+                    </p>
+            <EdCm> Figure 4 </EdCm>
+            <p>
+              <head>
+                <hi rend="bold"> 3.2 Substitutional Adaptation in Rachman </hi>
+              </head> It is assumed with this system that the case base is well populated so that near or exact matches can be found. This means that the adaptation is comparatively straightforward using substitution specialists that adjust the price based on differences between the base and target cases. For instance a substitution specialist may add or remove the value of having a conservatory. The important point is that the effect of this adjustment is quite local and does not cause complex interactions.
+                    </p>
+            <head>
+              <hi rend="bold"> Déjà-vu Vu: Transformational Adaptation </hi>
+            </head>
+            <p> In a CBR system for routine problem solving, retrieved cases, while being comparatively similar to the target, will probably require substantial structural modification. Consequently a limited opportunity exists for bad interactions to occur. Carbonell (Carbonell, 1983) characterises such problem solvers as belonging to the realm of <hi rend="italic">
+                <sic> Tranformational </sic>
+                <corr> Transformational </corr> Analogy </hi>. Essentially, the adaptation stage can be considered as a solution transformation problem. Finding the appropriate transformation is itself a problem-solving process, but in a different problem space. The states of this transformation-space (T-space) are problem solutions, as opposed to solution states. The transformation-space operators (T-operators) are atomic solution transformation operators (e.g., Substitute Solution Step, Delete Solution Step, Insert Solution Step, Reorder Solution Steps). And the job of adaptation is to find the appropriate sequence of T-operators which will transform the retrieved solution into the desired target solution (See Figure 5). 
+                    </p>
+          </div>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/080.00000</textSigle>
+            <title>Control Engineering Practice</title>
+            <domain>LerTec</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>M. D. Brown, G. W. Irwin, E. Swidenbank, B. W. Hogg</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI" />
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-032$A">
+          <div id="W2A-032$B">
+            <div id="W2A-032$C">
+              <div id="W2A-032$D">
+                <head>
+                  <hi rend="bold"> PARALLEL ADAPTIVE CONTROL FOR A TURBOGENERATOR SYSTEM </hi>
+                </head>
+                <head>
+                  <hi rend="bold"> M.D. Brown, G.W. Irwin, E. Swidenbank and B.W. Hogg </hi>
+                  <hi rend="italic"> Department of Electrical and Electronic Engineering, The Queen's University of Belfast, Stranmillis Road, Belfast BT9 5AH, UK </hi>
+                </head>
+                <p>
+                  <hi rend="bold"> Abstract. </hi> This paper describes the design and implementation of digital self-tuning controllers for turbogenerator automatic voltage regulator (AVR) and governor systems. Practical aspects such as controller robustness, lack of sufficient processing power, and algorithm mapping issues are discussed. A parallel architecture using Inmos transputers combined with and advanced VME bus-based measurement system provides a solution to these problems and offers the control systems designer the opportunity to implement complex parallel algorithms within the specified 10 ms industrial standard. Test results on a laboratory microalternator, involving both SISO and MIMO self-tuning regulators, are presented and compared with fixed-gain AVRs. 
+                        </p>
+                <p> Key Words. Transputers; power system control; turbogenerators; parallel processing; adaptive control 
+                        </p>
+                <head> 1. INTRODUCTION </head>
+                <p> The need for improved control of electricity generation equipment has been steadily increasing. Modern generating sets tend to be less stable than their predecessors, and therefore demand complex control systems for their successful operation. Control equipment manufacturers have recognised this and have developed computer-based systems. Digital governors have been in existence for some time now, and digital voltage regulators are available (Ham, 1989). 
+                        </p>
+                <p> Self-tuning and adaptive control can offer advantages over conventional control (Wu and Hogg, 1988). Simulation studies have proven the theoretical possibility of improving control performance, but implementation problems have hampered advancement on real systems. A major difficulty is the lack of processing power available from conventional microprocessors. While some success has been achieved with specialised devices such as Digital Signal Processors (Gurubasavaraj, 1989), the underlying architecture is suitable only for a limited number of applications. Alternative control architectures are therefore being developed, and one promising scheme involves the use of parallel processing with Inmos transputers. 
+                        </p>
+                <p> The transputer is a general-purpose, single-chip highspeed microprocessor, which is a member of the MIMD (multiple-instruction, multiple-data) class of parallel architectures (Flynn, 1966). The T800 architecture combines a 32-bit, 10 MIPS RISC processor with an on-board 64-bit floating point unit, memory and communications. The key technical feature, which distinguishes the transputer from other high-performance microprocessors, is the addition of four high-speed, duplex links. These allow a single transputer to be used as a node among any number of similar devices to form a parallel processing system. Control engineers view the transputer as a powerful processing element capable of easy implementation in an embedded parallel processing system, and an increasing number of successful applications are being reported (Irwin and Fleming, 1992). 
+                        </p>
+                <p> Increased computational speed is of course the primary benefit of parallel processing, allowing faster systems to be controlled and giving the control engineer the choise of added complexity in the control algorithm. Easy expansion, within a uniform hardware and software base, is another advantage, since it is possible to add more processors as required. This implies reduced development and maintenance costs in real-time computer control applications. 
+                        </p>
+                <p> This paper reports on transputer-based parallel adaptive control of a laboratory turboalternator, and describes how the hardware and software system developed achieves the specified real-time performance. Algorithm mapping issues are also discussed with respect to parallel implementation of SISO and MIMO self-tuning controllers. The hardware system includes the industry standard VME bus architecture and employs Intel 8751, Motorola 68020 and Inmos transputer systems to perform various tasks in a pipelined structure. 
+                        </p>
+                <p> Initial tests were performed on a realistic and proven simulation of a three-phase turboalternator running in parallel with both the measurement and control algorithms on a network of T800 transputers (Brown and Swidenbank, 1991). Building on this work, a comprehensive set of new results for both SISO and MIMO self-tuning regulators are presented here. These include real-time tests carried out on a scaled laboratory turbogenerator under SISO, multiloop and multivariable concurrent control. These confirm the improved performance advantages of using parallel adaptive control. 
+                        </p>
+                <p> The paper makes an original contribution in two directions. The work reported constitutes a practical real-time control application of parallel processing, since the adaptive controller algorithm is realised on a processor array thus enabling the benefits of this significant new technology to be assessed in a field of industrial significance. Secondly, the adaptive control results from the laboratory micromachine are noteworthy, since technological limitations have previously mitigated against implementation of these advanced controllers at the sort of sample rates required by power system equipment manufacturers. Thus, the graphs given in section 5 allow adaptive controllers to be assessed against fixed-gain control and, significantly, illustrate the potential benefits of moving from SISO adaptive control to the considerably more complex multivariable strategy. 
+                        </p>
+                <head> 2. SELF-TUNING CONTROL </head>
+                <head>
+                  <hi rend="italic"> 2.1 SISO Control Strategy </hi>
+                </head>
+                <p> A minimum-variance, self-tuning regulator (STR) with an auxiliary predictor is applied to the synchronous generator excitation loop, replacing conventional automatic voltage regulation (Wu and Hogg, 1988) as shown in Fig. 1. 
+                        </p>
+                <EdCm> graph inserted </EdCm>
+                <p> The outputs and inputs of the controlled system are : <EdCm> equation inserted </EdCm> where V <sb> t </sb> (t) is the terminal voltage at time t, w is the speed in rad s <note> -1 </note>, V <sb> r </sb> (t) is the input to the exciter, and <amp> delta sign </amp> represents deviation from steady-state. 
+                        </p>
+                <p> In the SISO case, the generator can be described as : <EdCm> equation inserted </EdCm> where y(k) and u(k) are the output and input of the system at the sample instant k. A, B, and C are polynomials in the backward shift operator q <note> -1 </note> and <amp> sign </amp> (k) is an uncorrelated random sequence of zero mean disturbing the system. 
+                        </p>
+                <p> Rewriting the equation in predictor form leads to the following general control law, 
+                        </p>
+                <EdCm> equation inserted </EdCm>
+                <p> The parameters of the polynomials F, G and C are determined by Extended Recursive Least Squares (ERLS). If the orders of the polynomials are taken as 3, and if the first parameter, g0, of G is fixed, then there are 8 parameters to be estimated. R is a constant which determines the weight placed on the control signal in the generalised minimum-variance derivation (Wu and Hogg, 1988). 
+                        </p>
+                <p> With the order of C chosen to be zero, the control reduces to equation.
+                            <EdCm> equation inserted </EdCm>
+                </p>
+                <p> The parameters of the polynomials F and G are now obtained using Ordinary Recursive Least Squares (RLS) and there are 5 parameters to be estimated. 
+                        </p>
+                <head> 2.2 <hi rend="italic"> MIMO Control Strategies </hi>
+                </head>
+                <p> Two approaches may be adopted when considering turbogenerator AVR and governing systems. One employs a separate self-tuner for both the governor and AVR and is referred to as "multi-loop control". The other method integrates both the governor and AVR systems into a single multivariable controller. Figs 2 and 3 illustrate these two procedures. 
+                        </p>
+                <p> In the multi-loop case, the governor and AVR control laws are the same as for the SISO system. The multivariable controller has the same form as the SISO algorithm, except that the associated vectors are replaced by matrices, and multivariable least squares is used to estimate the system parameters. Although the multi-loop system is easier to design and requires much less computation time to implement, it is expected that the multivariable controller will better exploit the inherent coupling in the turbogenerator system (Ibrahim <hi rend="italic"> et al </hi> , 1989). 
+                        </p>
+                <head> 2.3. <hi rend="italic"> Supervision Scheme </hi>
+                </head>
+                <p> Previous work has shown that self-tuning regulators will work well if the preconditions for stability and convergence are satisfied (Wu and Hogg, 1988). The non-linear nature of power systems means that the linear model is only valid for a small region about a given operating point. Any deviation form this region will cause the estimator to work outside the linear range and the resulting model will therefore be invalid. 
+                        </p>
+                <EdCm> diagrams inserted </EdCm>
+                <p> Various methods have been developed to ensure satisfactory operation of adaptive controllers, which usually take the form of protection algorithms for the parameter estimator. In this work, a number of methods were combined for this purpose, including offset rejection, modification of the RSL algorithm to deal with time-varying systems, moving boundaries for the estimated parameters, and switching the estimator on and off during transient conditions (Wu and Hogg, 1988 ; Brown and Swidenbank, 1991). 
+                        </p>
+                <head> 3. LABORATORY SYSTEM </head>
+                <head> 3.1 <hi rend="italic"> Micromachine </hi> System </head>
+                <p> The micromachine system consists of a small synchronous generator with an associated turbine simulator, connected to the laboratory busbar through a transformer and artificial transmission line. The synchronous generator is a 3 kVA, 220 V, 50 Hz, 1500 rpm 4-pole microalternator, whose parameters have been specifically designed to match those of a full-size generator. The alternator is driven by a separately excited d.c. motor, whose field current is kept constant. The torque supplied by the motor is therefore directly proportional to its armature current, being controlled by an analogue turbine simulation. The simulation represents a 3-stage steam turbine with reheater. The micromachine constitutes a two-rotating mass model of the shaft dynamics, whereas a full-scale system may have six rotating masses. 
+                        </p>
+                <p> Although a laboratory machine cannot be realistically expected to give results that precisely match those obtainable in a full-scale power station, it does provide a means of verifying the behaviour of controllers which have proved to be successful in simulation. As well as allowing a particular control system to be tested under real-time constraints, the micromachine provides a more stringent testing environment, incorporating many features not possible with a computer simulation. Effects such as non-ideal transducer characteristics leading to limited resolution and noise, saturation and other non-linearities present on the real machine, computational delays and variations in busbar voltage and frequency, all contribute to the problems that any controller will face in a practical situation. 
+                        </p>
+                <head> 3.2 <hi rend="italic"> Fourier Measurement Algorithm </hi>
+                </head>
+                <p> Conventional methods for determining machine terminal quantities like voltage and power rely on rectification and summation of the individual phase quantities to form an average RMS value. Since the voltage and current waveforms generated by a synchronous machine are rarely perfectly balanced, and are invariably contaminated by harmonics and noise, these traditional methods often produce poor representations of the true terminal quantities, especially during transient periods. Inaccurate measurement of feedback variables inevitably leads to a degradation in control performance and often means that the expected performance benefits from more advanced controllers do not accrue. 
+                        </p>
+                <p> One method which can be used to extract the fundamental components from complex periodic waveforms, such as those produced by a synchronous generator, is based on a finite Fourier series. Fundamental waveform components derived using this method can be combined to produce accurate measurements of terminal quantities under both symmetrical and unsymmetrical transient and steadystate conditions (Brown and Swidenbank, 1991). 
+                        </p>
+                <head> 3.3 <hi rend="italic"> VME Hardware System </hi>
+                </head>
+                <p> In order to advance the theoretical work and to create a structurally open-ended environment, a VME busbased system was chosen as the host hardware for the implementation of both the control and measurement algorithms. This standard bus system is already being used by power systems control manufacturers, and is well established in many industries. 
+                        </p>
+                <p> Voltage and current transformers are attached directly to the outputs from the microalternator. Signals from these devices are passed through anti-aliasing low-pass filters on a custom designed board and then on to the analogue i/o board. An 8751 microcontroller generates an interrupt signal at 12 times the system frequency (600 Hz). This interrupt triggers the master 68020 board to read in samples of the filtered electrical waveforms from the analogue i/o board and to read in the values of speed and rotor angle calculated by the 8751. On completion of the read sequence, the raw values are then passed to shared DMA (Direct Memory Access) memory to be picked up by the IMS BO11 T 800 transputer. The transputer then performs the Fourier measurement algorithm to produce the electrical terminal quantities. 
+                        </p>
+                <EdCm> equation inserted </EdCm>
+                <head> 3.4 <hi rend="italic"> Multi-task Architecture </hi>
+                </head>
+                <p> The configuration of the hardware and software systems needed to implement the various controllers follow closely that described above for the measurement system. An extra task is required in this instance, however, to look after the control output to the generator excitation and governoring systems. This takes the form of a simple program which convents the per unit output excitation and governor signals from a particular controller into suitably scaled values and then writes them to the digital-to-analogue converters on the analogue input-output board. 
+                        </p>
+                <p> This program must run on the VME transputer since the D/A converters are accessed through DMA memory on the VME bus. The program therefore executes in parallel with the Fourier measurement program. The control algorithm runs on the PC based TRAM (transputer module) and communicates with the measurement program and the digital-to-analogue conversion program via an Inmos link wire. 
+                        </p>
+                <p> The entire process can be visualised in Fig. 5. 
+                        </p>
+                <EdCm> equation inserted </EdCm>
+                <p> As can be seen, both the Fourier measurement algorithm and the digital-to-analogue conversion routine run on the same transputer. The processor must therefore schedule cpu time between the two programs. This does not cause any conflict or affect the synchronism of the measurement system since the D/A conversion program takes only a negligible time to execute when compared to the computationally complex Fourier algorithm. 
+                        </p>
+              </div>
+            </div>
+          </div>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/084.00000</textSigle>
+            <title>Pleanáil: The Journal of the Irish Planning Institute</title>
+            <domain>LerTec</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>N. O'Byrne</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1989</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI" />
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-037$A">
+          <head>
+            <hi rend="bold"> TOWARDS THE AGE OF CLEAN TECHNOLOGY </hi>
+          </head>
+          <head>
+            <hi rend="bold"> N. O'Byrne </hi>
+          </head>
+          <p> Increasingly, human-kind is learning that biological life on the planet is a very delicate phenomenon. It thrives only under finely balanced conditions. We call these conditions our 'environment'. It is our responsibility to future generations to prevent any threat to the environment at source. 
+            </p>
+          <p> Today there are about 8 million registered chemicals in the world, and this total is forever increasing. Most, however, exist only in laboratories. Around 70,000 of them however are used daily by industry and individuals. "Technological progress" has created such a multiplicity of chemicals for different purposes that we are in danger of losing control over their known effects. Everyone of these chemicals affects the environment. Few are necessary for life, while others have negative effects on health, animal or plant life, or on climate. 
+            </p>
+          <p> Most of the human-made chemicals do not occur naturally. Unlike natural substances which have a cycle within nature, synthetic substances follow their own rules, i.e. non-biological and toxic. Raw materials and energy are used and refined into products which after use can become persistent and toxic waste. Many new substances are designed to be very stable. They are virtually immune to biological breakdown. They will be in our environment for a long time. Freon is an example which will lead to damage to the ozone layer for the next 100 years. DDT and other PCBs are other examples of environmental toxins that will continue to cause damage for decades. If the invention, production and use of synthetic chemicals is allowed to keep increasing we risk a steady increase in environmental crises, either in the short run, or in the as yet unforeseen longer term. The risks arise from all aspects of the chemical process, i.e production, transport, use and disposal. 
+            </p>
+          <p> It will soon be necessary to seriously consider reducing the flood of chemicals. The traditional approach to dealing with environmental threats posed by chemical processes has been to reduce the environmental load caused by emissions of various kinds. Purification plans or processes are used to take care of the immediately known harmful substances in industrial and household wastes. Often incinerators are used to try to destroy toxins. The problems with this approach is that many of the synthetic substances cannot be destroyed, only redistributed or diluted. Purification processes transfer the chemicals to a sludge which creates a further disposal problem. Incineration creates gases containing new and often even more toxic substances. We may soon be forced to review our approach to dealing with chemicals and the environment, if indeed it is not already too late. Increasing recognition must be given to what is known as the <quote> "Precautionary Principle" </quote> in dealing with discharges to the environment. This involves an acknowledgement that a substance could cause harm without scientific proof being presently available that it actually does cause harm. Problems often arise because only the short run consequences of large quantities of a chemical are known. For instance, sufficient data to predict human health effects from exposure (one chemical at a time) to the more than 70,000 synthetic chemicals now in production exists for less than 1% of these chemicals. Virtually nothing is known of the effects of chemical mixtures. Accidents are not provided for, except for emergency/disaster mopping-up plans. Long term consequences, however, can emerge where they are least expected. This is a lesson learned from past disasters. Must we always wait until there are enough dead or dying bodies around before taking action? We cannot afford more mistakes, or to wait until real harm has been proved before taking action. Adopting a preventative strategy will open a wide range of opportunities to avoid negative environmental consequences in the future. Such an attitude may make today 's environmental threats unnecessary, and perhaps even unprofitable. Such an attitude can serve to prevent environmental problems at source. This is relevant to all industries and should be integral to all development policies. The practicality of this approach can be considered in relation to the following example of Chlorinated Solvents and the Paper Industry. 
+            </p>
+          <p> A 'solvent', as the name implies is something that dissolves something else. The most common solvent is ordinary water. Most substances are soluble in water. Many synthetic substances foreign to nature, however, are not soluble in water. To dissolve them, other substances not found in the natural environment are used. Various petroleum based organic solvents are therefore produced with qualities that make them suitable for this purpose. Chlorinated solvents are organic solvents that contain chlorine. Chlorine is classed as a halogen and organic substances containing halogens are called halogenated hydrocarbons. In addition to chlorinated solvents, this group contains environmental toxins such as DDT, Lindane (pesticides), other toxic PCB's (polychlorinated biphenyls) and also dioxins. <amp> asterisk </amp> Past experience with stable and toxic organic solvents has been an unhappy one for the environment. 
+            </p>
+          <p> Chlorinated solvents are today spread around the world as they are volatile and evaporate easily. Globally, more than 6.14 million metric tonnes of commonly used halogenated solvents are produced and potentially released into the atmosphere each year. A few occur naturally. Methyl chloride can be produced by bacteria in the oceans or as a result of burning vegetation. However, of the total atmospheric content of halogenated hydrocarsons, less than 1 <amp> per cent sign </amp> comes from natural sources. Other chlorinated solvents exist entirely within our industrialised society with no natural source. 
+            </p>
+          <p> The amount of chlorinated solvent in the atmosphere is determined by the lifetime of the substance and the rate at which it is added to by emissions. Carbon Tetrachloride, which is very stable, remains in the atmosphere for 76 years. Since it has <sic> seen </sic>
+            <corr> been </corr> used in large amounts over the past decades, high concentrations have already accumulated. It is currently the most important non-CFC ozone depleter. In 1985 it was responsible for 8 <amp> per cent sign </amp> of total ozone depletion. Another common degreaser, Methyl Chloroform, could become a major ozone depleter world-wide in the next few decades unless use is checked now. 
+            </p>
+          <p> Because chlorinated solvents have been used in industry for several decades, the health effects in the working environment are well known. They were initially regarded as relatively harmless with low toxicity. The dangers of skin damage or of long term inhalation are now known, and some unions recognise the need to limit worker exposure. All chlorinated solvents are fat soluble and thus they accumulate in fatty tissues. This enhances the harm they do. Many are now classified as carcinogens. When the solvents eventually breakdown, they can form new substances that are even more toxic than the original chemical. For instance, methyl chloroform forms highly toxic phosgene gas when burnt. 
+            </p>
+          <p> Chlorinated solvents in the atmosphere either eventually breakdown in the troposphere or are transported into the stratosphere. Freons (one of the CFCs) contribute to the thinning of the ozone layer. This arises when the stable freons reach the stratosphere where they are broken down by solar radiation, releasing chlorine atoms. This chlorine is very reactive and quickly breaks down the surrounding ozone. A single chlorine atom can breakdown several hundred ozone molecules. The other chlorinated solvents that reach the stratosphere are broken down in the same way as CFCs and have the same direct effect on the ozone layer. 
+            </p>
+          <p> Chlorinated solvents also contribute to the rise in global temperature i.e.. the 'Greenhouse Effect'. Although carbon dioxide is the most important greenhouse gas, chlorinated hydrocarbons are also important. They absorb a different type of heat radiation, contributing to overall global <sic> warning. </sic>
+            <corr> warming </corr>
+          </p>
+          <p> When chlorinated solvents breakdown in the atmosphere they contribute to the formation of hydrochloric acid which adds to acidification of rainwater and soil. Hydrochloric acid is ranked as the third most important cause of acidification after sulphur and nitrogen. It has been calculated that present global emissions of chlorinated hydrocarbons yields at least 2 million tons of hydrochloric acid per year. Hydrochloric acid also has the ability to form microscopic drops in the air and this can contribute to the formation of "smog". 
+            </p>
+          <p> The effects of chlorinated solvents are thus well documented. Sooner or later, 100 <amp> per cent sign </amp> of the solvents used enters the environment – either in pure form, or as breakdown products, or after reacting with other substances. They affect humans, animals and plants. In order to prevent environmental problems, a complete understanding of how toxins are formed and spread is of critical importance. This would require that the paths of all substances from production, transport, use and disposal be known. This would make it easier to find the sources of toxic contamination, and to take measures to prevent emissions to the environment and to find suitable alternatives. 
+            </p>
+          <p> Increasingly for most uses of chlorinated solvents, there are alternative processes and products that are more acceptable from an ecological viewpoint. Alternatives can be divided into 3 groups – chemical alternatives, process alternatives and system alternatives. 
+            </p>
+          <p> The principle of chemical alternatives is to find chemicals to do the same job, but without the disadvantages of the currently used chemicals. Some chlorinated solvents can be replaced by a natural substance;- water, our most common solvent. The largest industrial use of chlorinated solvents is degreasing. Replacements based on natural substances such as alcohols are available. Among consumer products, white correction fluid, e.g.. "Tipp-Ex" is a good example of a product for which there is an alternative – water for the currently used 1.1.1. trichloroethane. In industry, chlorine based bleaches can be replaced by less harmful hydrogen peroxide. 
+            </p>
+          <p> Replacing a chemical in a process often calls for the process to be adapted. The purpose of the process remains the same. Choosing the right process alternative may sometimes make the use of solvents unnecessary. For paint removal, mechanical grinding or blasting can render harmful chemicals redundant. The use of chlorinated solvents in the dry-cleaning industry could be reduced with redesigned machines using other cleaners where water-soluble cleaners don't do the job. To avoid the use of chlorinated solvents in degreasing, laser techniques can replace metal working processes such as die stamping and machining which gives rise to the need for the use of the chemicals. 
+            </p>
+          <p> System alternatives arise in the case where the purpose of the process or product is questioned. The solution to the environmental problem is to see that the demand for the process ceases. The paper industry is a good example. Increased use of recycled paper is often seen as the aim of environmentalists. This is, however, only one issue in a complex problem. 
+            </p>
+          <p> Increasingly European recycling companies are turning to hydrogen peroxide for bleaching of secondary paper fibre. This has little environmental impact. There is growing acceptance that brilliant white paper is not required for all purposes. This trend is consumer led. As far as the paper industry is concerned it represents only a small step towards clean technology. There will inevitably be growing awareness of the problems associated with the current paper industry processes. This coupled with awareness of the existence of ecologically sound alternatives will lead to a growing demand for "Clean Technology" from the paper industry, i.e., a paper industry that does mot produce dangerous waste. The paper industry is, however, not to be regarded in isolation. The global threat to the environment requires that this concept be applied to all industries Decision makers, internationally, nationally and locally will be responsible to bring this about before it is too late. Public opinion made aware of the issues involved by environmentalists and others will expect it and demand that pollution threats be eliminated at source. 
+            </p>
+          <p> Recycled paper is promoted as it reduces the demand for virgin wood, and the need for vast mono-culture plantations of suitable trees. It can also contribute to the problems of waste disposal by reducing the quantity of waste to be disposed of. There are, however, a number of environmental problems associated with paper production which are overlooked in the recycling debate. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/094.00000</textSigle>
+            <title>Past and Present: A Journal of Historical Studies</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Alvin Jackson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-001$A">
+          <head> UNIONIST MYTHS 1912-1985 </head>
+          <head> Alvin Jackson I </head>
+          <p> The events of 1912-14 in Ireland have served as a creation myth for Unionism in the twentieth century — as a kind of Orange Genesis. Shaped and strengthened by the patriarchs Edward Carson and James Craig <note> 1 </note>, Unionism survived political challenge from a serpentine H. H. Asquith and reappeared, with the steeples of Tyrone and Fermanagh, from the deluge of the Great War. The Unionist rulers of Northern Ireland saw in the issues and personalities of 1912-14 an important moral prop in the same way as varieties of nationalist have sought to cultivate the legacies of Wolfe Tone or Padraig Pearse, and varieties of English commentator have sought retroactive definitions of the Glorious Revolution.<note> 2 </note>
+          </p>
+          <p> Carson has emerged as an Orange icon, a fact recognised in a literal sense in the diptych painted by Joseph McWilliams; he has emerged as an Orange Daniel O'Connell, <quote> "the saviour of his tribe" </quote> — protecting the least of his people from British betrayal, unifying and mobilizing his community in a uniquely thorough manner. <note> 3 </note> The emotional bond between this latter-day Counsellor and his following, a bond well captured in Gerald Dawe 's poem "A Question of Covenants", was of a peculiarly intense quality: mill-women kissed his hand; country squires treated him with an exaggerated reverence. <note> 4 </note> The emotional charge of Ulster Day, 28 September 1912, when thousands gathered at Belfast city hall to oppose Home Rule, long persisted in the northern folk memory. It is an ironic testimony to the potency of this image that contemporary Unionists, in organising their first major demonstration against the Anglo-Irish Agreement, should have chosen precisely the same location as their forefathers, opposing an earlier act of ministerial "treachery", did in 1912. Photographs taken from the dome of the city hall in 1985 consciously mimic the sepia images of 1912. <note> 5 </note> Ian Paisley plays Carson to James Molyneaux 's Craig: both invoke the men of 1912 in legitimizing their creed. The mythology of 1912-14 is therefore a central feature of latter-day Unionism, with memories of Edwardian derring-do remaining alive and relevant, and with the actions of the Edwardian leadership generating a still complete respect and reverence. 
+            </p>
+          <p> Nevertheless, just as the reputation of O'Connell was illuminated in different ways, depending on the needs of nineteenth-century Irish nationalism, <note> 6 </note> so Carson and the men of 1912 have been examined from different perspectives, and exploited in different forms. Successive generations of Unionist, and successive forms of Unionism, embrace different aspects of the myth, even if all tacitly agree in looking back to 1912-14 for whatever form of legitimization they seek. Unionist chroniclers and propagandists, beginning with Ronald Mc Neill in 1922, accepted that this was a period of unique internal unity within northern Unionism, a period when the cohesion of Unionism and between Unionism and its allies was pretty well complete. The Protestant clergy, women and children were politicized, and were bound into organized or active Unionism as never before: the young C. S. Lewis, cocooned in suburban loyalism, was writing essays on the Home Rule question from the age of ten, on the eve of the constitutional crisis.<note> 8 </note> An Ulster Women 's Unionist Council was first formed in 1911, and was quickly followed by local offspring. <note> 9 </note> Generally the numbers of men and women responding to their leaders were unprecedented: just under 500,000 signed the Ulster Covenant; some 100,000 were (nominally) recruited to the paramilitary Ulster Volunteer Force (U.V.F.). 
+            </p>
+          <p> English Conservative sanction was as apparently thorough as it was astonishing: when Andrew Bonar Law made his fiery Blenheim pledge in July 1912, Craig was as startled as English commentators with a rather more vigorous sense of political morality. <note> 10 </note> English Conservatives of the second rank, like Sir William Bull, actively promoted Ulster Unionist gunrunning; first-rank Tories such as Walter Long, even possibly Bonar Law himself, approve the mass importation of weapons into Larne, Country Antrim, at a preliminary stage. <note> 11 </note>
+          </p>
+          <p> Here, then, was a period apparently characterized by organizational and strategic success — a period when the Unionist leadership was as unequivocal as its following. There was no perception of moral greyness, no reprehensible ambiguity. Moreover Unionists did not, ultimately, have to follow through the implications of their own behaviour: in August 1914, with the outbreak of the Great War, they could back away from the precipice in a more credible fashion than marked their later retreats from vulgar bluster. The chasm was reached only with the first battle of the Somme, when fears of annihilation, of race death, came close to fulfilment — though in circumstances very different to those envisioned before the war. Set against the carnage of the Great War, and against the more modest brutalities of the Troubles, the struggle against Home Rule appeared as heroic without being bloody. And, in retrospect, the combination of threatened militancy at Larne, and the actual immolation at the Somme, had served to prepare the way for partition and for a Unionist <hi rend="italic">
+              <foreign> heimat: </foreign>
+            </hi> the Government of Ireland Act, the foundation of Northern Ireland, could be credibly interpreted as a tangible reward for their political investment before and during the Great War. Kenneth Pyper, the protagonist of Frank McGuinness 's <hi rend="italic"> Observe the Sons of Ulster, </hi> was not alone in seeing, even in his despair, a logical progression between the U.V.F., their role on the Somme and the later struggles of Unionism. <note> 12 </note>
+          </p>
+          <p> This article explores the historical perspectives of modern Unionism, and the bond between this vision of the past and contemporary Unionist action. The argument is divided into three principal sections. First, the resonance of Unionist actions in 1912-14 is charted: the ways in which the popular memory of 1912-14 was cultivated and the importance of Unionist imagery from the period are both examined. Secondly, one episode in the period — the gunrunning coup of April 1914 — is isolated in order both to illustrate some of the broader themes of the article, and to compare popular and official memories with available historical evidence. The article closes with a variety of reflections on the interrelationship between the loyalist past and the loyalist present, and on the ways in which contemporary Unionism is illuminated through an exploration of its historical consciousness. 
+            </p>
+          <head> II </head>
+          <p> Little wonder that Unionists should have returned to 1912 in piety, and with a sense of nostalgia for what, for them, was a more vital and coherent political faith. The increasingly confident governors of Northern Ireland saw Carson and Craig as statebuilders, and perceived themselves as the sole legatees of these men. Their reputations were bitterly guarded. Carson chose a judicial career in England rather than office in Northern Ireland, but his contribution to Unionism, and to the North, did not go unattested. <note> 13 </note> His occasional visits won lavish press coverage. A reverential literature was consolidated, culminating in Edward Marjoribanks and Ian Colvin 's triple-decker "life" of 1932-6. Carson was actively involved in the manufacture of his own mythology, supplying forewords to Unionist publications and co-operating in the Marjoribanks and Colvin project: indeed he was so pleased with this biography that he was prepared to distribute inscribed copies of the first two volumes to his intimates. <note> 14 </note> When he died in 1935 there was a state funeral in Belfast, and an ornate memorial in St. Anne 's Church of Ireland cathedral. He was given a statue, cast in an appropriately defiant pose and placed in front of the Stormont parliament building. He was in competition with Queen Elizabeth II when the Belfast city fathers were considering how to name their new bridge across the Lagan in 1965 <note> 15 </note> Craig gained lapidary immortality in the form of a bridge — in this case over the Foyle in Derry — and through the name of the new town linking Portadown and Lurgan in North Armagh. He, too, had successive literary apologists: Hugh Shearman in 1942, and St. John Ervine in 1949. <note> 16 </note>
+          </p>
+          <p> Generations of Unionist politicians have vindicated themselves through genuflecting to the men of 1912. In the later 1960s this became less a matter of celebrating the Northern Irish state through celebrating its founders and more thoroughly a matter of seeking legitimacy <hi rend="italic"> within </hi> Unionism. With the movement threatening to disintegrate, to revert to its constituent parts, rival Unionist sects sought to annex the Carson mystique and thereby to consolidate their claims over the tradition as a whole. This is partly why Terence O'Neill 's experimental Unionism in the 1960s was marketed as much by reference to the perceived legacy of the men of 1912 as by reference to any more universal principle: in arguing for a progressive Unionism in 1965 O'Neill warned that <quote> "no one anywhere [should] make the mistake of thinking that because there is talk of a new Ulster that the Ulster of Carson and Craig is dead." <note> 17 </note>
+            </quote>
+          </p>
+          <p> Yet, surprising as it seems, and despite O'Neill 's repeated references to the Unionist patriarchs, this mistake <hi rend="italic"> was </hi> made. It was precisely because O'Neill deviated from the familiar in other respects that Ian Paisley could appeal with increasing persuasiveness to fundamentalist Unionism, and could credibly invoke the achievement of Carson. Paisley courted Carson 's son, the bewildered Edward Carson Junior, deploying him in election campaigns in February 1965. <note> 18 </note> When Paisley opened his Free Presbyterian cathedral, the Martyrs ' Memorial Church in east Belfast, a monument to Carson was erected in a conspicuous position at the front of the building. In a nicely symbolic incident in 1967 Paisley used the cover of Carson 's statue at Stormont to snowball the car of the Taoiseach, Jack Lynch, then paying a courtesy visit to O'Neill. <note> 19 </note> In November 1985 Paisley, opposing the Anglo-Irish Agreement, concluded his peroration at Belfast city hall with Carson 's view of the rights of citizenship. <note> 20 </note>
+          </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/097.00000</textSigle>
+            <title>The Check up Guide to Good Health</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Davis Coakley</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI">Oxford </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-026$A">
+          <head> GROWING OLD </head>
+          <p> The fact that most people can now look forward to a long and healthy life is one of the great achievements of modern man. During this century, there have been dramatic increases in the average life expectancy. Throughout history, of course, there has been a small group of 'biologically elite' who lived into old age, some even surviving into advanced old age. However, even in comparatively recent years, the change has been dramatic. The number of centenarians in the UK has increased from around 250 in 1950 to about 4000 today.
+            </p>
+          <p> Two Irish women famed for their long lives were the sixteenth-century Countess of Desmond and the Honourable Katherine Plunket who died earlier this century. The Countess of Desmond, who lived in the castle of Inchiquin near Youghal in Co. Cork, is said to have lived to be 140. According to one of her contemporaries:</p>
+          <p>
+            <quote> She might have lived longer had she not mette with a kind of violent death, where she must need climb a nutt tree to gather nutts, soe falling down she hurt her thighe, which brought a fever, and that brought death.
+                </quote>
+          </p>
+          <p> The Honourable Katherine Plunket of Ballymascanlan House, Co. Louth, was born in 1820. She was an enthusiastic gardener, and in September 1931, when in her 111th year, she won a prize at the Dundalk show for her fruit and vegetable exhibit. She died a year later when she was almost 112 years old.
+                </p>
+          <head> AVERAGE LIFE EXPECTANCY </head>
+          <p> Although there are now over 400,000 people aged over sixty-five in the Republic of Ireland, forming more than 11 per cent of the total population, Ireland still has the lowest life expectancy in the EC. The sixty-year-old European female can expect to live another 22.1 years on average, compared with only twenty years for the Irish female. The mean for the sixty-year-old European man is nearly eighteen years, while it is only sixteen years for the Irish male. From these figures, it is clear that, on average, women live four years longer than men, and that people in Ireland die, on average, two years earlier than the average European. 
+                </p>
+          <p> The main causes of death in Ireland are heart disease, cancer, lung disease and stroke. The fact that there is now more emphasis on a healthier lifestyle, as well as an increased awareness of good health care in later years, should improve the life expectancy of the average Irish person. A seventy-five-year-old woman can now expect to live for another ten years, a fact that emphasises the importance of good health care in old age. Ten years is a long time a person 's life, so everything possible should be done to ensure that the years are of high quality. While this is desirable for humanitarian reasons, it also makes good economic sense in this increasingly mercenary age.
+                </p>
+          <head> A UNIQUE POPULATION PROFILE </head>
+          <p> People are living longer now because of improved environmental factors. Better housing, clean water, improved sewerage systems, healthier diets – all of these have played a part. In the past, old age was the privilege of the few. Now, it is regarded as the birthright of all. We need a fundamental rethink on the whole subject of growing old. We must accept that most people expect to live long lives. It should therefore be our aim to make the quality of a person 's last twenty years as good as the previous years. 
+                </p>
+          <head> SOME MISCONCEPTIONS </head>
+          <p> It is a common error to view the elderly as a single homogeneous group. Yet they are as different as any other age group in society. There are the usual distinctions associated with current or previous employment, social status and education. Although problems with health certainly are more common for those over seventy-five, even in advanced old age, the majority of people still live at home. 
+                </p>
+          <p> There is a general assumption that health and physical ability decline remorselessly with advancing years. This is simply not the case. One study carried out by Duke University in the US followed a group of elderly people over several years. They found that half of those who returned regularly for assessment suffered no decline in physical ability during periods ranging from three to thirteen years. 
+                </p>
+          <p> Sexuality in older years has been a taboo subject for many years, yet research has shown that many older people still enjoy enriching and fulfilling sexual relationships. Couples who share an active sexual relationship in their younger years usually continue this relationship as they grow older. 
+                </p>
+          <p> Ageing is part of the natural cycle that begins at conception and ends with death. It is therefore important to distinguish between chronological age and biological age. Two people aged seventy might have been born on the same day, but they may have aged at different rates, making one biologically much younger than the other. Even in the same person, organs can age at different rates. For example, the heart of one seventy-year-old person may compare favourably with that of a sixty-year-old, even though other parts of the body such as the skin may be more like that of the typical seventy-year-old. 
+                </p>
+          <p> Changes associated with ageing should not be confused with those caused by disease. Changes associated with ageing do not cause significant disability on their own. Complaints should never be dismissed with glib comments such as, 'What can you expect at your age?' If such a question is posed, the appropriate answer should be, 'Good health care!' People should be aware of the importance of distinguishing between the changes associated with normal ageing and those associated with illness. The treatment of illness in old age, as at any age, can bring about remarkable improvements in a person 's quality of life. 
+                </p>
+          <head> OLD AGE AND MODERN MEDICINE </head>
+          <p> Despite the fact that older people can live healthy and active lives, there is still an unacceptably high level of illness associated with age. Conditions such as Parkinson 's disease, Alzheimer 's disease, arthritis and stroke all impair the quality of life for a small but significant percentage of older people. This fact presents modern medicine with one of its greatest challenges. At the beginning of this century, serious illness and disability were common in childhood and accepted as part of life. The concentrated efforts of pioneering paediatricians and medical scientists changed this situation so that serious illness in childhood is now unusual. The illnesses of old age are now being tackled by an increasing number of physicians and medical research institutes who specialise in the medical problems of the elderly. Consequently, many more people will be able to grow old without major disabilities. 
+                </p>
+          <p> Experts who make gloomy predictions about ageing often assume that, over the next twenty years, people will age in the same way that people did in the last twenty years. This is a fundamental error. People who are growing older today are far healthier than older people of a similar age twenty or thirty years ago. 
+                </p>
+          <head> AGEING SKIN </head>
+          <p> Contrary to popular opinion, ageing itself does not produce many changes in the skin. Thin skin, pigment changes and wrinkles are mainly caused by exposure to the sun. Ultra violet light is also responsible for the hard or keratotic patches seen on the faces of some older people. It also causes skin cancers, including malignant melanoma. Some older people can develop very thin skin, especially on the backs of the hands and the forearms. This is harmless and is the result of poor elasticity in the skin tissues. These changes can also lead to easy bruising which is slow to resolve. Itchiness can be due to excessively dry skin, although there can be other causes. If it persists, a doctor should be consulted. 
+                </p>
+          <head> VISION </head>
+          <p> Eyesight should be checked regularly as it can be affected by a variety of ageing and disease processes. A rapid build-up of fluid pressure within the eye can cause severe pain, blurred vision and vomiting. This condition needs urgent treatment.
+                </p>
+          <p> More commonly, pressure can build up gradually and lead to an insidious loss of eyesight. People are often unaware that this condition, known as glaucoma, can have a silent and painless onset. A considerable amount of vision can be lost before it is detected.
+                </p>
+          <p> There are several causes of sudden visual disturbance in older people. An acute change is always a medical emergency. It should be reported to a doctor immediately, as urgent action is often required if the vision is to be saved.
+                </p>
+          <p> Most people have heard of cataract formation which is caused by an opacification of the lens. However, it is still surprising that many people allow their vision to go almost completely before they seek help. Modern technology has revolutionised the treatment of cataracts. 
+                </p>
+          <p> Some older men and women develop a condition known as macular degeneration which damages the retina and leads to marked visual problems. High magnification lenses can be helpful in dealing with this problem. 
+                </p>
+          <head> HEARING PROBLEMS </head>
+          <p> It has been estimated that over half of older people develop hearing problems. There is an age-related decline in the ability to hear higher frequencies, and this makes it particularly difficult to hear consonants. As consonants convey much of the sense of speech, high frequency loss can greatly impair in individual 's ability to follow a conversation. 
+                </p>
+          <p> Age changes in hearing begin in middle age. They often become apparent when a person experiences an increasing difficulty in following conversations, especially when there is any background noise. Those who have significant high frequency hearing loss can be helped with a hearing aid. Modern aids are quite sophisticated in design and function. They amplify certain frequencies and have noise-suppression units that make it easier to follow speech in a noisy environment. 
+                </p>
+          <p> Impacted wax is a common and treatable cause of hearing loss. The amount of moisture within the ear canal declines with age so that wax secreted by the skin glands tends to become dry and hard. Removal of this wax can 'cure' the resulting deafness.
+                </p>
+          <p> Whatever the cause of a hearing loss, it is important that it should be investigated and treated early. If deafness is ignored, the person who is affected can become socially isolated and depressed. 
+                </p>
+          <head> MUSCLE AND BONE </head>
+          <p> The density of bone tends to decline in both sexes from the fourth decade. Excessive thinning of the bone structure, known as osteoporosis, can lead to fractures of the limb bones or of the small vertebral bones of the spine. Loss of bone density can affect women, particularly after the menopause. This may be stopped by the use of hormone replacement therapy (HRT). 
+                </p>
+          <p> Among the other causes of osteoporosis are lack of exercise and an inadequate diet. An adequate intake of calcium and vitamin D is essential for healthy bones. Vitamin D is found in fish oils and margarine and, to a lesser extent, in eggs. Milk fortified with vitamin D is now available commercially. The body can also make its own vitamin D if the skin is exposed to sunlight. If vitamin D is lacking, normal strong bone is replaced by poor-quality soft bone, a condition known as osteomalacia. Apart from bone changes, osteomalacia can also lead to muscle weakness. The condition causes bone pain, weakness, difficulty in walking and recurrent fractures. 
+                </p>
+          <p> There are some age-related changes in the joints. However, the decline in joint function most commonly found in later life is due to osteoarthritis. In this condition, the cartilage is damaged and the joints become painful and swollen.
+                </p>
+          <p> There are several methods of treating osteoarthritis, including physiotherapy and medication. Joint replacement can also revolutionise the quality of life for many with this severe disease. (There is further information in the chapter, 'Arthritis and Rheumatism'.)
+                    <head> BLOOD PRESSURE </head>
+          </p>
+          <p> Blood pressure tends to rise with age, and doctors accept higher levels as 'normal' for older people. The decision about whether to treat high blood pressure in old age is based on factors such as the level of the pressure, and evidence of damage to organs such as the heart and brain, and whether the person will be able to tolerate the treatment involved. Blood pressure should be checked periodically as part of a routine medical assessment, as significant and untreated high blood pressure can lead to conditions such as stroke.
+                    </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc xml:lang="en">
+        </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/099.00000</textSigle>
+            <title> Ulster Tatler</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Ruth Elliott</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-025$A">
+          <head>
+            <hi rend="bold"> SELF HELP </hi>
+          </head>
+          <head> By Dr. Ruth Elliott </head>
+          <p> Did you know that to some people, Christmas is a source of great stress? What a shame! It can be a very exciting time with plenty of activity, an atmosphere of hustle and bustle with people in a happy and elevated mood. 
+            </p>
+          <p> There is a saying, <quote> 'People are upset, not by things, but the view they take of them.' </quote> In other words we can choose how we wish to react to anything in life. When we think about Christmas we can choose to regard it as a fabulous time of the year, with an air of activity, a feeling of anticipation of something about to happen and a general feeling of well being. 
+            </p>
+          <p> On the other hand, we can choose to regard Christmas in a number of negative ways. I do not really like to be suggestive of any of the possible negative interpretations, but I feel it is important to recognise at least a few. For example, it is possible to become overwhelmed by the problems of Christmas shopping, sending Christmas Cards, planning Christmas outings and entertainment and sorting out family obligations and regard these in a negative manner. However we can choose instead to concentrate on the more positive aspects of these and other Christmas activities. 
+            </p>
+          <p> Christmas is traditionally regarded as a period of peace and goodwill. It is unfortunate that for a number of us, we have neglected this aspect and allowed ourselves to be carried along by various outside pressures. 
+            </p>
+          <p> For instance, take Christmas shopping as an example. I have often heard people say they hate Christmas shopping. I 'm sure you have heard this on many occasions. Now how would feel if you thought that the Christmas gift you had just received caused the giver such distress? 
+            </p>
+          <p> Would you really appreciate it? To reverse the situation, do you really want to give someone a gift if it has caused such hassle or pressure? 
+            </p>
+          <p> I can understand that for some people the fuss of crowded shops and the indecision as to what to buy for certain friends and associates can be unpleasant. However we can alter this and regard it in a more positive manner. If we decide to enjoy our Christmas shopping, find pleasure in selecting the most appropriate gift and give it in a gesture of friendship, we ourselves will gain so much more pleasure and enjoy a sense of achievement and elation. 
+            </p>
+          <p> When we decide to go shopping at Christmas, it is important to have our plans made before we start. If we make a list of names of all the people to whom we wish to give gifts, then add in some possible gifts for some, it means that at least some of the decisions are already taken. Hence we are not in the position of wandering around aimlessly. Gradually we will also be able to think of appropriate gifts for the remaining people on our list. 
+            </p>
+          <p> The same applies to Christmas cards. Again may I remind you that none of us would wish to receive a card from someone who had not enjoyed sending it or who did not mean the message on the card. 
+            </p>
+          <p> Another aspect that often makes people shudder when they think of Christmas is that so much needs to be done at the one time. We tend to leave things to the last minute, then get into a fuss. Most of us have a tendency to procrastinate at any time. More so at Christmas. The difference between Christmas and other times is that for once the deadline cannot be extended. Knowing this, one wonders is this rush at the end partly due to laziness or do we tend to keep putting things off until we ourselves are victims of the fuss we claim to dislike. 
+            </p>
+          <p> Housewives often regard Christmas as being very stressful because of the cooking involved. Some dread making the traditional Christmas dinner for months ahead. But is it such a big deal? It 's no more really than a Sunday lunch and at least you do not have to rush it – no-one is going far on Christmas Day. Furthermore we should not forget the joys of cooking and the sense of satisfaction one achieves from presenting the ultimate meal. Unfortunately, like so many other aspects of Christmas, the original joys have become masked in our modern-day emphasis on actual achievement without regard for the sense of well-being that accompanies the expression of quality. 
+            </p>
+          <p> Another aspect of the Christmas season is entertaining. Many people have work outings with their colleagues. Often restaurants are fully booked at this time. Sometimes standards are not as high as usual. People who do not eat out often find this upsetting and complain. This has the unfortunate effect of spoiling the lunch/evening for others in the party. 
+            </p>
+          <p> Those who eat out frequently throughout the year accept a lesser standard – they understand that staff have problems and concentrate on enjoying themselves and not getting upset. Indeed does it have to be spot on so long as all are enjoying themselves. The important point is being together and experiencing the atmosphere which is so infectious. I always feel at this time of year, it is a pity to entertain at home as the ambience of hotels and restaurants adds to the sense of occasion and hence to our well-being. It is also worth remembering that staff outings are very important to work relationships as people are able to relate at a much more casual and relaxed level without the inhibiting effects of status and hierarchy. 
+            </p>
+          <p> Christmas is also a time for families to be together. People look forward to being united with loved-ones. Unfortunately the stresses of Christmas mar the occasion and often rows and arguments occur. These are very damaging to everyone concerned and become a further source of stress. What a pity to spoil a brief holiday with unnecessary tensions. This problem also occurs at such occasions as weddings and funerals when people who do not see each other often are together in close and unfamiliar proximity. 
+            </p>
+          <p> To many people the run up to Christmas Day is the most pleasant part of the season with people enjoying the high they get from the increased activity. As well as planning for Christmas Day, enjoying outings, organising shopping, people tend to spend money on themselves – as if they need the extra thrill that comes with spending and acquiring something new. 
+            </p>
+          <p> And so to Christmas Day. I often hear people say afterwards: <quote> "It was very quiet."</quote>
+            <quote> It is as if they were disappointed – as if they expected the hustle of the previous week or so to continue. Christmas Day is quiet for most people Unfortunately some have a feeling of anticlimax – as if everyone else is having a better time than they. This is always a problem if one looks for the ultimate. Nothing is ever good enough.</quote>
+          </p>
+          <p> IF we expect too much of Christmas Day and indeed any other event, we leave ourselves in the position of having nowhere to go with our emotions other than downwards – which is deflating. So, how about accepting Christmas Day as it is, not forgetting that the main purpose is a celebration of our religious heritage and enjoy it. 
+            </p>
+          <p> Finally, Christmas is followed by the New Year. An important event for us all when we become more aware of ourselves, our life and the year that has passed. It is important to use the few days before the 1st of January to reflect on the previous year and to decide how we will react within the new year. While 'New Year Resolutions' are often treated lightly, here is a wonderful opportunity to work on change. For example, many smokers choose the New Year as the date to stop smoking, people start diets, others plan changes in their work or lifestyle. There is a great power in using the New Year as the extra impetus to a major decision. 
+            </p>
+          <p> In the meantime - <hi rend="bold"> Merry Christmas and a Happy New Year. </hi>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/099.00001</textSigle>
+            <title> Ulster Tatler</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Ruth Elliott</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-025$B">
+          <head>
+            <hi rend="bold"> Profit from progress, message for industry </hi>
+          </head>
+          <p> THE FORMATION of a quality food chain…detailed knowledge of physical and financial performance on-farm…attention to animal welfare and environmental issues… protection of our high animal health status…feed formulation to reach the genetic potential at each growth stage and very close attention to management detail were all outlined as means to ensure the survival of the pig industry in Province, by speakers at the NI Pig Conference, held at Cookstown this week. 
+            </p>
+          <p> The conference, which was organised and sponsored by John Thompson <amp> ampersand </amp> Sons, Elanco Animal Health and NuTec Holdings (Irl) Ltd, attracted a wide audience with all aspects of the industry, from production to processing being represented. 
+            </p>
+          <p>
+            <hi rend="bold"> Victor Truesdale, </hi> sales director with John Thompson <amp> ampersand </amp> Sons, summing up the wealth of information, said: <quote> "Some of the measures outlined are in the control of the individual farmer but others will require industry wide co-operation if they are to be achieved. 
+            </quote>
+          </p>
+          <p>
+            <quote>"However if we are serious about our industry we have to tackle these issues in a meaningful way." </quote>
+          </p>
+          <p> Industry measures outlined at the conference included the possibility of a quality food chain where all sectors get together to produce a quality product that has consumer confidence, and will attract premium markets. Strict quality control and meaningful financial incentives should be used to maintain such a structure. 
+            </p>
+          <p> A total industry effort will be required to maintain our high animal health status and to find systems that will meet all EU requirements for animal welfare and environmental pollution. 
+            </p>
+          <p> The opportunities for the feed industry and producers to work together to target specific growth stages of the pig were also highlighted. 
+            </p>
+          <p>
+            <hi rend="bold"> FINANCING THE ENTERPRISE: </hi> Discussing how his bank might react to a request for a substantial loan for a new pig unit on a green field site, <hi rend="bold"> Stephen Smith, </hi> Agricultural Adviser to the Ulster Bank, pointed out that the pig industry was characterised by fluctuations in profitability, a decline in pig prices in real terms and difficulties in the processing sector. 
+            </p>
+          <p> With this industry image the bank will insist on detailed financial information on the farm to highlight past performance and to draw up a realistic and flexible business plan for the future. 
+            </p>
+          <p> A new unit would have to conform to welfare and environmental disease unit. The extra costs which such measures would entail must all be built into the business plan, plus working capital for the purchase and maintenance of stock until the first animals are sold. 
+            </p>
+          <p> Stephen Smith produced figures to show that the annual cost of repaying the loan plus interest over a 10-year period could vary from <amp> pound sign </amp> 22.60 per pig where 17 pigs are sold per sow per year, to <amp> pound sign </amp> 16.70 where 23 pigs are sold per sow. 
+            </p>
+          <p> He pointed out that such expenditure is very difficult to justify when it is compared with an average margin over feed for the past five years of <amp> pound sign </amp> 15.35, as recorded in John Thompson <amp> ampersand </amp> Sons 'management plan. 
+            </p>
+          <p> He said: <quote> "Some other source of capital and/or source of repayment is therefore desirable." </quote>
+          </p>
+          <p> Income from other enterprises can over disruption to cash flow in the early stages, but a high standard of management and a business-like approach are essential in the long term to minimise the effect of repayments. 
+            </p>
+          <p> Farmers could also consider returns from other sources such as sale of breeding stock and selling to specialised outlets. 
+            </p>
+          <p> However, Stephen Smith 's viewpoint is that the real hope for the future of the industry is the establishment of a quality food chain where there is feedback of information from the consumer and where the achievement of the standards required command a meaningful premium to ensure loyalty to the chain. 
+            </p>
+          <p> Stephen pointed out that 100 per cent finance is not usually attractive to the banks and farmers could reduce the initial debt by joint ventures. A joint venture with a feed compounder or pig processor could provide some stability in profitability and could also form part of the quality food chain which seems the most likely survival route for the industry. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/100.00000</textSigle>
+            <title>Archaeology Ireland</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> Claire Cotter</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-027$A">
+          <head> Atlantic fortifications – THE DUNS OF THE ARAN ISLANDS </head>
+          <p> Stone forts are a common element of the archaeological record in the west of Ireland and are particularly numerous in areas such as the Dingle peninsula in Co. Kerry, the Burren in Co. Clare and parts of west Donegal. The majority are regarded as cashels – the stone equivalent of the earthen ringforts which occur throughout the country, and which are generally considered to be homesteads dating to the Early Christian period.
+            </p>
+          <p> The Western Stone Fort project was set up to look at a specific group of large stone forts, which are distinguished from the majority of cashels and promontory forts by their commanding locations, highly developed defensive features and distinctive architecture. About thirty or so of these forts are known to exist, with Grianán Aileach, Co. Donegal, Staigue, Co. Kerry and Dún Aonghasa on the Aran Islands, Co. Galway, being the best known examples.
+            </p>
+          <p> In the second half of the nineteenth century Dún Aonghasa in particular received much attention from scholars, antiquarians and romanticists some of whom at least shared the view of William Wilde that the fort was a <quote> 'stronghold prepared as the last standing place of the Firbolg aborigines of Ireland'. </quote> As a result perhaps of their perceived heroic status, almost half of these large stone forts were restored during the Celtic Revival movement towards the end of the last century. Since then, with the exception of the pioneering work carried out by T.J. Westropp in Co. Clare, most of these monuments have not been closely studied. One of the primary aims of the Western Stone Fort Project is to compile an inventory of these large stone forts, examine their distribution and siting, and compare their architectural features.
+            </p>
+          <p> Substantial archaeological excavation has been carried out this century at four sites: Cathair Chomáin, Co. Clare, and Leacnbuaile, Dunbeg and Loher, Co. Kerry. The majority of the published examples have been assigned by their excavators to the Early Christian period, but there is evidence for earlier activity at Dunbeg, where charcoal from a ditch or trench predating the stone rampart yielded a radiocarbon data of 802-534 cal. BC. The eighth-century AD date which the excavator assigned to Cathair Chomáin in 1938 is now challenged by archaeologists who suggest that some of the artefacts found there could well have a pre-Christian date.
+            </p>
+          <p> There are other indications of a pre-Christian origin for some of these forts. The presence of a <hi rend="italic"> chevaux de frise </hi> (upright pillars of stone set at close intervals as a defensive obstacle) at Dún Aonghasa and Dúchathair on Inis Mór, Aran Islands and at Cathair Bhaile Cinn Mhargaidh (Ballykinvarga) in the Burren, suggests links with forts in Spain, Wales and Scotland where this feature also occurs. Architecturally many of the Irish sites are comparable to Iron Age stone forts along the Atlantic seaboard of western Europe. Whether these links represent the spread of ideas, or the movement of people along the Atlantic seaways is a matter of opinion at present, but some scholars would look to this route as the possible artery along which Celtic influences first reached Ireland. Looking at the Irish forts then against the background of contemporary settlement and culture in the area often referred to as 'the Atlantic Province' also forms part of the Western Stone Fort Project. 
+            </p>
+          <head>
+            <hi rend="bold"> The forts on the Aran Islands </hi>
+          </head>
+          <p> Most of the fieldwork associated with the project to date has been concentrated on the Aran Islands. The Aran Islands are strategically located across the mouth of Galway Bay and are outliers of the main Burren limestone plateau. The islands are noted for their wealth of archaeological remains, outstanding among which are seven large stone forts. Four of these (Dún Aonghasa, Dúchathair, Dún Eoghanachta and Dún Eochla) are located on Inis Mór, the largest of the three islands; Dún Conchúir and Dún Fearbhaí are located on Inis Meáin and Dún Formna lies on Inis Oírr, the smallest and most southerly of the three islands. 
+            </p>
+          <p> The forts vary considerably in size and in the complexity of their defences. Dún Aonghasa, with an enclosed area of 5.7 hectares (14 acres), is by far the largest, and the labour required for its construction implies a considerable community effort. Whether that effort was voluntary or in response to a coercive power we can only surmise, but such an elaborate undertaking would appear to have been prompted by political or military factors. In contrast, the simple univallate fort of Dún Eoghanachta encloses less than a third of an acre and may have been built to reflect the status or power of a wealthy individual. Dún Fearbhaí and Dún Formna are also univallate sites, though larger and of more irregular plan. A medieval towerhouse now stands in the interior of Dún Formna. Three of the forts (Dún Aonghasa, Dún Eochla and Dún Chonchúir) are multivallate. Dún Chonchúir was additionally protected on the eastern side by a substantial bastion. The remaining site, Dúchathair, is a promontory fort defended by a massive stone wall, with the <hi rend="italic"> chevaux de frise </hi> providing an additional line of defence on the landward side. Its exposed location has resulted in severe erosion of the upstanding remains since it was first recorded by the Ordnance Survey in the nineteenth century. 
+            </p>
+          <p> The remains of huts are visible in the interiors at Dún Chonchúir, Dúchathair and Dún Eoghanachta. A variety of ground plans are represented – circular, heel-shaped, rectangular with rounded corners, and irregular. Without excavation it is not possible to assign a date to these huts. The examples at Dún Eoghanachta certainly postdate the <sic> constuction </sic>
+            <corr> construction </corr> of the fort and may belong to a period after the main occupation. The refurbished huts within Dúchathair and Dún Chonchúir appear to be contemporary with the final development of the defences at each site. They may also be contemporary with each other – both consist of a complex of conjoined clochán type' structures, with possible entrance passages and featureless doorways. The ruined foundations of a second group of huts are visible along the exposed western edge of the promontory at Dúchathair. The rectangular ground plan with rounded internal corners is typical of a number of the clochánwhich survive on Inis Mór – well preserved examples include two clochánnear Eoghanacht church and Clochán na Carraige near the village of Cill Mhuirbhigh.
+            </p>
+          <head>
+            <hi rend="bold"> Dún Aonghasa </hi>
+          </head>
+          <p> Dún Aonghasa is dramatically located at the edge of steep cliffs which form a more or less continuous band along the southern coast of Inis Mór. The site commands a spectacular view from Connemara on the north to the cliffs of Moher on the east and, on a clear day, Mt. Brandon on the Dingle Peninsula can be seen on the skyline to the south. 
+            </p>
+          <p> The cliff-top location and the complexity of its defences link Dún Aonghasa with the hillfort tradition. About fifty hillforts have been recognised to date in Ireland, and most are generally considered to have been built in the Iron Age. Intensive study of hillforts in Britain has indicated a complex development from Late Bronze Age beginning down to the end of the first millennium BC or early centuries AD. 
+            </p>
+          <p> The substantial inner citadel at Dún Aonghasa also links this site with the ringfort tradition and therefore the monument, as it survives today, probably incorporates alterations and refurbishments carried out at intervals over a long period of time – perhaps as long as a thousand years. 
+            </p>
+          <p> There are three main enclosing walls, each terminating at the cliff edge along the south. An additional wall in the west sector now appears to begin and end abruptly. The walls are of drystone construction and were terraced on the interior face; steps leading up to the terraces survive on the inner two walls. The broad band of <hi rend="italic"> chevaux de frise </hi> outside the middle enclosure is up to 38m wide in places and still proves a <sic> formidiable </sic>
+            <corr> formidable </corr> obstacle today, with individual pillarstones standing up to 1.75m in height. 
+            </p>
+          <p> The three main walls subdivide the interior into areas of quite separate character. Much of the outer enclosure is characterised by steeply falling ground and areas of bare weathered limestone. The inhospitable exposed terrain, and the location of the <hi rend="italic"> chevaux de frise </hi> along its inward perimeter, suggest that this area may have been used mainly for animals. In contrast, the middle enclosure affords some protection from the prevailing winds and consists of fairly level ground, with some soil cover. A number of possible hut sites have been identified here in the course of recent fieldwork. 
+            </p>
+          <p> The inner enclosure surrounded on three sides by a massive wall up to 4.9m in height and 5.8m in thickness, is elevated above the remainder of the fort. There are two terraces on the interior of the wall and there is some evidence to suggest that the inner terrace was a later addition. The entrance to the inner enclosure is through a monumental gateway in the north-east, but a chamber in the wall on the west side may be an earlier blocked-up entrance. It is likely that some protective walling existed along the cliff edge during the occupation of the site. The interior is level, broken only by a platform of bedrock at the cliff edge. It has been suggested that this platform formed the focus of ritual activity during the Iron Age. The rock was certainly left in place deliberately and its present table-like appearance is not completely natural, but there is no way of knowing now whether or not it had a special significance for the builders of the fort. 
+            </p>
+          <head>
+            <hi rend="bold"> Excavation </hi>
+          </head>
+          <p> Two seasons of excavation have now been completed at Dún Aonghasa and a further season is planned for the coming summer. Most of the excavation to date has been concentrated in the western half of the inner enclosure. Here, the remains of a number of hut sites have been uncovered. The best preserved example is roughly circular in plan and 4.8m in diameter. The walls were formed of low orthostats and there was an entrance in the east side. The western edge of the hut now lies under the lower terrace of the inner enclosure wall. It seems unlikely that the single slabs which made up the wall could have formed the foundations of a clochán-type dwelling and the superstructure may, therefore, have been of wood. 
+            </p>
+          <p> The interior of the hut had a paved floor and there was a stone-lined hearth. The occupation layer overlying the floor contained limpet shells and a few periwinkle shells, sheep, cattle and pig bones and a small number of guillemot bones. Finds included coarse pottery, mainly from bucket-shaped vessels used for cooking, part of a clay mould for casting a bronze spearhead, two crucible fragments and a finely carved bone pin. 
+            </p>
+          <p> A short distance outside the doorway of this hut the remains of a broadly contemporary stone-lined trough were preserved. The trough was over 1m in length, 0.6m wide and 0.35m deep, and was filled with stony clay containing animal bone. The only artefact recovered was part of a bead made from pumice. A sample of animal bone gave a date range of 752-392 cal. BC. 
+            </p>
+          <p> The exact function of this trough is difficult to determine. At Skara Brae in the Orkney Islands, similar stone troughs were found set into the floors of the Neolithic houses, and are thought to have been storage tanks for shellfish. Stone troughs also occur at <hi rend="italic"> fulachta fiadh, </hi> where they were used in cooking. The lack of fresh water in the immediate vicinity of Dún Aonghasa may make this interpretation less likely, but it is possible that like the present day Aran Islanders, the occupants collected rainwater. 
+            </p>
+          <p> Both the trough and the hut overlay earlier occupation material. No definite structures associated with this earlier occupation have been found within the inner enclosure but a second cutting, opened just outside it to the north, contained the remains of a fairly crude hut. The walls of this hut were formed of irregular uprights and, along the west, the hut was butted up against the remains of a wall. A radiocarbon date from animal bone in the occupation layer gave a date of 900-450 cal. BC. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/103.00000</textSigle>
+            <title> Ulster Tatler</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Jacqui Armstrong</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-023$A">
+          <head> CHOLESTEROL </head>
+          <p>
+            <hi rend="bold"> We hear a lot of talk these days about cholesterol but do we really know what it is and what it does to us? If we asked the average person "what is cholesterol?" we may get the following responses. It 's something in fatty foods…it 's something to do with heart diseases…it 's bad for you, isn't it? …and so on. So now let us look at what it is and the role it plays in our bodies.</hi>
+          </p>
+          <p> Cholesterol is a naturally occurring fat-like substance and at room temperature appears white and waxy. Cholesterol is not quite the rogue it is made out to be, it also plays an important role in the function of the body. </p>
+          <p> Much of cholesterol is a vital constituent of cell membranes, the nervous system, vitamin D, some hormones and bile salts. However, it also occurs in the more simple form of circulating fat particles in the blood-stream. It is when these fatty particles become excessive, cholesterol can start to build up on the artery walls. </p>
+          <p> Cholesterol is manufactured by the liver and carried around the body within particles called lipo-proteins. There are two types of lipo-proteins, LDL (low-density lipo-proteins) and HDL (high density lipo-proteins). LDL transports cholesterol from the liver to the peripheral tissues, including the artery walls. At this stage it can contribute to the furring up process in the arteries which can eventually lead to coronary heart disease. The other type HDL, transports cholesterol from the <sic> tisues </sic>
+            <corr> tissues </corr> back to the liver and helps prevent the furring up process. Therefore a raised HDL level is good as it can give some protection against heart disease. </p>
+          <p> Approximately one gram of cholesterol is made in the liver and small intestines each day. Even if we take no dietary cholesterol, animal fats and small amounts of vegetables  <corr> vegetable </corr> fats our bodies continue to produce cholesterol. However, if we consume a diet high in cholesterol and saturated fats, i.e. eggs, dairy produce, meat, processed vegetable fat and take very little exercise, we run the risk of higher levels of cholesterol in the blood. </p>
+          <p> Cholesterol is measured by taking a blood sample. The amount is measured in millimoles per litre. In the United Kingdom the average reading of cholesterol is between 5-7.5mmol/L. This is higher than it should be with the ideal being 5mmol/L or lower. Anyone with a raised cholesterol level should try and reduce this. </p>
+          <p> One of the first things that is necessary is a change of diet. We should avoid the following: <hi rend="italic"> Fatty meats (lamb, pork). Skins of animals (sausages, salamis and pates). Cream, full fat milk, butter, full fat cheese, pastries, fried foods, etc. </hi>
+          </p>
+          <p> We need to switch to low fat alternatives and try to use oils such as olive oil, peanut, groundnut oil and rape seed oil. These oils are rich in mono-unsaturated fatty acids which helps raise HDL levels. Sunflower oil can also be used as a substitute for saturated fat in cooking. It is important when using polyunsaturate spreads instead of butter that it is not spread half an inch thick on our bread. </p>
+          <p> We should increase the amount of fibre in our diet, especially soluble fibre which helps deal with cholesterol. Soluble fibre is found in fresh fruit, vegetables, legume vegetables, i.e., peas and beans and dried legumes such as lentils, chick peas, soya beans, red kidney beans, etc. Oatbran is another rich source of soluble fibre. Also we should eat more fish such as mackerel, herring and salmon. </p>
+          <p> Regular exercise is important as it can help lower LDL cholesterol levels and raise HDL cholesterol levels. </p>
+          <p> Also supplements such as garlic capsules, fish oil supplements and vitamin B3 are helpful in lowering cholesterol. </p>
+          <p> Therefore, by adopting better eating habits, exercising more we will feel better and also help reduce a major risk factor of heart disease. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/103.00001</textSigle>
+            <title> Ulster Tatler</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Jacqui Armstrong</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-023$B">
+          <head> Producing quality young vegetable plants </head>
+          <p> VEGETABLE PLANTS grown in glasshouses or polytunnels have increased in popularity since their introduction here in the early 1980s. </p>
+          <p> The transplants raised in module trays offer an alternative to bare-root and block-raised plants for field vegetable production. </p>
+          <p> The division of the trays into cells means each plant is a separate unit requiring its own water and feed supply with no buffering reservoir available from its neighbour. </p>
+          <p>
+            <hi rend="bold"> BENEFITS: </hi> The main purpose of raising vegetable plants in modules is to produce crops which are uniform and to achieve continuity of market outlets. </p>
+          <p> In addition, the speed and ease of planting is enhanced by using a module transplanter. </p>
+          <p> Module plants will also have a small reservoir of water and nutrients on which they survive during the first few days in the field before new roots establish in the soil. </p>
+          <p> The cost of seed has risen. For example, hybrid cauliflower seed has doubled in price over the last five years. </p>
+          <p> The use of modules makes better use of high cost seed as better germination is achieved under protection than if sowing the same seed in an outdoor seedbed. </p>
+          <p> The module trays are usually made of rigid polythene or plastic. After being filled with a module compost they can be seeded using a plate or vacuum seeder. </p>
+          <p>
+            <hi rend="bold"> VEGETABLE CROPS: </hi> Modules are used for a range of crops, but especially for brassicas (cabbage, cauliflower, Brussels sprouts and calabrese) and for early leeks. </p>
+          <p> The size of the module cell varies depending on the plant to be grown and time of sowing. Autumn-sown crops are sown in larger modules as they will not be planted out until the spring, whereas a spring-sown plant will only take about six weeks to produce a plant ready for transplanting. </p>
+          <p> The larger module will help to extend the season by producing an earlier crop than those sown in a smaller module – for example, a 308 tray. The most common tray used for main crop production contains either 260 or 308 cells. </p>
+          <p>
+            <hi rend="bold"> MANAGEMENT: </hi> In the glasshouse of polytunnel, the module trays are raised off the ground to allow air movement under them. This air helps to prune the young roots, keeping them within the cell. </p>
+          <p> The growth of the plant can then be controlled by the liquid feeding. In a late season when ground conditions are too wet for planting, the young plants can be 'held' by regulating the feeding. Then, prior to planting, they are fed with a higher nitrogen feed to stimulate growth again. </p>
+          <p>
+            <hi rend="bold"> PLANTING: </hi> The date of planting has a larger effect on the crop maturity date than the date of seed sowing. This is important when a grower requires continuity of production from crops such as cauliflower and calabrese. Modules are ideal for ease of planting of small areas at regular intervals. </p>
+          <p>
+            <hi rend="bold"> PROPAGATORS: </hi> There are specialist plant propagators who produce plants to order as required by their customers. However, it is also possible to grow modules on-farm provided the management of the young plants in modules is very good. </p>
+          <p>
+            <hi rend="bold"> DEVELOPMENTS: </hi> The design of trays is changing to allow more plants per unit area of glasshouse and also to be more durable. </p>
+          <p> In the field, starter solutions applied at planting are now being used to enhance the development of new roots immediately after planting. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/103.00002</textSigle>
+            <title> Ulster Tatler</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Jacqui Armstrong</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-023$C">
+          <head> Coliform mastitis a major killer </head>
+          <p> THE BOVINE mortality survey carried out by the Veterinary Science Division identified coliform mastitis, or acute environmental mastitis, as one of the major killers of adult dairy and suckler cows in Northern Ireland. </p>
+          <p> Unlike ordinary mastitis, the udder infection in the coliform version has been shown to be the result of exposure to bacteria that survive and, in the right conditions, multiply within the cow 's environment. </p>
+          <p> It is most common during the winter months when cattle are housed, particularly from December to March, and often in milking herds which practice teat dipping and dry cow therapy. </p>
+          <p> The affect herds are usually well-managed, the husbandry is good and the cows are mainly housed in cubicles and fed silage. </p>
+          <head>
+            <hi rend="bold"> SIGNS AND SYMPTOMS: </hi>
+          </head>
+          <p> Typically, the condition occurs in freshly-calved cows in their fourth or fifth lactation. It is uncommon in calved heifers. </p>
+          <p> The bacteria involved are mostly the same as those excreted in cow faeces and <hi rend="italic"> E. coli </hi> are the most commonly isolated species – hence the general term coliform mastitis. Because these bacteria produce toxins, the affected animal is often suddenly very ill, after being quite normal at the last milking or feeding time. </p>
+          <p> The cow will be very depressed, sometimes down and unable to rise with a low body temperature – this can be confused with milk fever. There will be swelling <sic> or </sic>
+            <corr> of </corr> one <sic> of </sic>
+            <corr> or </corr> more of the mammary quarters with a watery mastitis. </p>
+          <p> The overall survival rate is usually only 50 per cent and urgent attention will be required from a veterinary surgeon who will use aggressive therapy, often including intravenous fluids, to save the life of the cow. </p>
+          <p> Quarter sampling, for culture and drug sensitivity at a laboratory, will indicate the best form of antibiotic treatment for use in future cases. </p>
+          <p> Recent evidence also suggests that stripping out of the infected quarter, every two or three hours, to remove the <hi rend="italic"> E. coli </hi> and its toxin, is a helpful procedure. Ironically, the infected quarter, although lost to the present lactation, will return to almost full production in the next lactation, provided the cow survives. </p>
+          <head>
+            <hi rend="bold"> CONTROL MEASURES </hi>
+          </head>
+          <p>
+            <hi rend="italic"> Calving boxes: </hi> Obviously, it is important to reduce the level of faecal contamination in the cow 's immediate environment. </p>
+          <p> Because freshly-calved cows have a depressed immune system, they are known to be more susceptible to coliform mastitis. </p>
+          <p> Consequently, it is essential to clean out calving boxes at regular intervals, certainly at least two-three times during the winter months and particularly after a coliform mastitis has occurred, as this indicates that the environment is heavily contaminated with <hi rend="italic"> E. coli </hi>
+          </p>
+          <p>
+            <hi rend="italic"> Cubicles: </hi> It is equally important to keep the <sic> the </sic>
+            <corr> ? </corr> of the cow 's environment as clean as possible. </p>
+          <p> Scrape out the backs of cubicles and passageways at least twice a day and bed down the cubicles at lease three times a week with sufficient material to make the cows use them. </p>
+          <p> Unfortunately, the bacteria can multiply in dirty, damp bedding, particularly if it is the type of material that could act as a compost, for example, materials such as sawdust, mushroom compost, chopped paper and peat. These will require more attention than biologically inactive materials such as crushed limestone, sand and rubber mats. </p>
+          <p> However, all of these are useless if they are contaminated and are continually damp because the ventilation within the cubicle house is inadequate. Dry bedding in a well-ventilated house with slotted roofs and Yorkshire cladding will inhibit the multiplication of <hi rend="italic"> E. coli. </hi>
+          </p>
+          <p>
+            <hi rend="italic"> Before and after milking: </hi> In the parlour, make sure that the cow 's teats are cleaned and dried before milking. </p>
+          <p> Drying is particularly important, as <sic> washinh </sic>
+            <corr> washing </corr> without it just produces a heavily contaminated drip at the end of each teat. </p>
+          <p> Also, make sure that the milking machine is cleaned adequately after each milking with a temperature that exceeds 85Deg C to ensure the destruction of coliform bacteria. </p>
+          <p> High Total Bacterial Counts (TBCs) are a sure sign that one, or all, of these tasks are not being done properly. </p>
+          <p> Finally, infection can also take place immediately after milking, particularly when the teat canal is still open and the cow leaves the parlour to lie in a dirty cubicle. </p>
+          <p> Closure of this canal takes 20-30 minutes and if the cow can be kept on her feet for this period, say at the silo face because she is hungry, then disease incidence will fall. </p>
+          <p> Reducing the concentrate levels in the parlour and closing the cows out of the silo for one-two hours before milking will have the desired effect. </p>
+          <head>
+            <hi rend="bold"> CONCLUSIONS: </hi>
+          </head>
+          <p> 1. Coliform mastitis is caused by faecal organisms. </p>
+          <p> 2. The condition is life-threatening, so seek immediate veterinary help. </p>
+          <p> 3. Control measures should be aimed at reducing the environmental levels of <hi rend="italic"> E. coli. </hi>
+          </p>
+          <p> 4. Keep cows on their feet after milking. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/104.00000</textSigle>
+            <title>Facts about Drug Abuse in Ireland</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> Desmond Corrigan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B&gt;-028$A">
+          <head>
+            <hi rend="bold"> CANNABIS </hi>
+          </head>
+          <p> Cannabis is one of the oldest plants cultivated by man. Archaeological evidence from a Stone Age village, excavated on the island of Taiwan, suggests that mankind has been using the plant <hi rend="italic"> Cannabis sativa </hi> from earliest times. 
+            </p>
+          <p> The cannabis plant is a very adaptable annual, which can grow in most parts of the world including Ireland. In its chequered career, it has been grown for its long fibres known as hemp fibre, for its seed (hemp seed), used as a source of oil and for bird seed, and most notably for the intoxicating resin produced in its leaves, flowers and fruits. The drug form of cannabis has also been used for many centuries in many countries as a medicine. The characteristic chemicals called cannabinoids (of which there are at least 60 found in the plant) are currently being tested for use in modern medicine to treat glaucoma (a disease which causes gradual blindness), to prevent the nausea and vomiting caused by some anti-cancer drugs, and possibly to treat epilepsy. 
+            </p>
+          <p> The cannabis plant produces over 400 different chemicals, the most important of which are the main psychoactive compounds, the tetrahydrocannabinols (THC). However other cannabinoids may modify the effect of THC. Different cannabis products contain different amounts of THC. Herbal cannabis, known as marijuana, pot, grass or dope contains between 0 and 11 <amp> per cent sign </amp> of THC, depending on the source. The resin, known as hashish or 'hash', contains between 1 and 26 <amp> per cent sign </amp> THC. The resin is squeezed or scraped from the flowering tops of the plant, and then compressed into blocks or slabs and not allowed to solidify. This is the commonest form of cannabis used in Ireland. The strongest form of cannabis is an oil called 'hash oil' prepared by extracting or distilling the cannabinoids from the plant. This form generally contains about 30 <amp> per cent sign </amp> of THC but samples containing up to 60 <amp> per cent sign </amp> of THC have been encountered. Abroad it has been noted that the marijuana now on the market is at 7 <amp> per cent sign </amp> of THC, over 600 times more potent than in 1974 and at times may be even stronger than hash even though the herb form is usually considered to be the weakest form of the drug. Little is known about the THC content of the cannabis drugs available in Ireland. One sample of cannabis grown in Ireland was found to contain nearly 4 <amp> per cent sign </amp> of THC, while other samples were nearly devoid of any active drug. In Ireland cannabis is usually smoked in home-made cigarettes called 'joints'. In the case of the resin and oil they are usually mixed with tobacco. Cannabis can also be smoked in pipes, made into a drink or put into cakes or biscuits. The variation in THC content described above makes it difficult to accurately predict the effects of a given sample of cannabis. Adding to this variability is the fact that the amount of cannabis used per dose also varies considerably. One study has shown the THC content of street 'joints' to vary from 0.15 mg up to 41 mg where 5 mg of THC per joint would be the minimum for a drug effect to occur. 
+            </p>
+          <head>
+            <hi rend="bold"> Legal Status </hi>
+          </head>
+          <p> All cannabis products are controlled by the Misuse of Drugs Act. Cannabis is included in Schedule 1 which prohibits its medical and non-medical use. It is therefore illegal to grow, produce, supply or possess any of the drugs except in accordance with a licence from the Minister of Health for research or analysis. It is also an offence to allow premises to be used for cultivating, supplying or smoking cannabis. The penalties for possession of small amounts of cannabis herb and cannabis resin for personal use are, for a first offence, a fine of up to <amp> pound sign </amp> 300 imposed by the District Court or up to <amp> pound sign </amp> 500 in the Circuit Court. For a second offence, the District Court can impose a fine of up to <amp> pound sign </amp> 400, which rises to <amp> pound sign </amp> 1,000 if imposed by the Circuit Court. In the case of a third or subsequent offence, the District Court can impose a maximum fine of <amp> pound sign </amp> 1,000 or 12 months in jail or both. If the case is heard before a judge and jury, the maximum penalty can be an open-ended fine or 3 years imprisonment, or both fine and prison sentence. Cultivation, supply and possession of the isolated chemicals (cannabinoids) are treated more severely. (See section on Drug Laws for further details). 
+            </p>
+          <head>
+            <hi rend="bold"> Prevalence and Availability. </hi>
+          </head>
+          <p> Cannabis is apparently the most widely used of the illegal drugs but we have no idea of exactly how many Irish people have experimented with it, or use it regularly. There is little doubt that cannabis use has increased dramatically since 1969. A survey of university students in Cork in 1977 showed that 19 <amp> per cent sign </amp> had experimented with the drug. The most recent indications are that 13 <amp> per cent sign </amp> of Dublin post primary school children surveyed had used cannabis at least once. The experimentation rate increased with age, with 2.3 <amp> per cent sign </amp> of those under 13 reporting use of the drug compared to 24.6 <amp> per cent sign </amp> in those 17 or over. Experimentation rates in rural school children are believed to be lower than those in Dublin. Large numbers of patients attending the Drug Clinic report cannabis use, and prosecutions for cannabis-related offences represent between 60 and 70 <amp> per cent sign </amp> of all prosecutions under the Misuse of Drugs Acts. 
+            </p>
+          <p> Prices for different cannabis products range from <amp> pound sign </amp> 1 per gramme of homegrown herb, to <amp> pound sign </amp> 3 per gramme of imported herb. Cannabis resin such as Lebanese Gold, Pakistani Black or Moroccan Red can cost between <amp> pound sign </amp> 5 and <amp> pound sign </amp> 10 per gramme. The cannabis smuggled into Ireland comes from a variety of countries in North Africa, the Middle East, the Indian sub-continent and America. 
+            </p>
+          <head>
+            <hi rend="bold"> Short-Term Effects. </hi>
+          </head>
+          <p> The effects of cannabis depend on a number of factors, including the type of cannabis used (hash and hash oil have greater and longer lasting effects than the relatively weaker marijuana), the way it has been stored (cannabinoids are unstable in light and air), the amount used, the way it is taken, and the experience, mood and expectations of the user. 
+            </p>
+          <p> When smoked, cannabis exerts its effects very quickly. The effects last up to one hour with low doses, and for several hours with higher doses. When it is eaten or drunk, it takes one to two hours to have an effect. The dose is not easily controlled and unpleasant reactions are more likely and more severe. Inexperienced cannabis users usually require some training in order to recognise the effects of the drug. 
+            </p>
+          <p> The sought-after effects, referred to as the 'high', include talkativeness, hilarity, euphoria, relaxation and a feeling of slowed time. Usual doses of cannabis also interfere with short-term memory and learning ability, with obvious implications for students and school-children trying to learn while 'high'. The more complex the task the more it is likely to be disrupted. Frequent heavy cannabis users are likely to have poor academic records, high levels of absenteeism from class and a high drop-out rate from the educational system. Moderate doses may also interfere with clarity of speech, resulting in communication of irrelevant words and ideas. Recent studies in adolescents show that impairment of recent memory in heavy cannabis users is still detectable after a 6 week drug-free interval. Adult cannabis users in the U.S. also report memory impairment and 45 <amp> per cent sign </amp> of those surveyed stated that their ability to concentrate on complex tasks, to think clearly and to get things done was impaired. Motor co-ordination is also impaired at usual dose levels, affecting a person 's ability to operate machinery, fly a plane or drive a car. This impairment lasts for some hours after the 'high'. Evidence continues to increase in other countries showing that cannabis contributes to the high level of fatal car, truck, airplane and train crashes among cannabis users. In many studies cannabis users report higher rates of traffic accidents than non-users and the percentage of those killed or injured in accidents who had been smoking cannabis is the same as for alcohol users. The very common combination of alcohol and cannabis produces greater damage than either drug alone, although little is known about the consequences of using cannabis and other drugs together. 
+            </p>
+          <p> An increasing number of cannabis users (especially the inexperienced) using the stronger forms of the drug now available report adverse reactions to the drug. These unpleasant reactions include fearfulness, confusion, severe panic and anxiety, paranoid reactions and hallucinations. These reactions, although frequently very frightening, rarely require medical attention and usually respond to reassurance. There would appear to be no danger of an overdose and no deaths in humans have been reported. 
+            </p>
+          <head>
+            <hi rend="bold"> Long-Term Effects. </hi>
+          </head>
+          <p> Because widespread regular use of cannabis by such groups as children, adolescents, girls and women is a relatively new phenomenon, the consequences of long-term use, particularly of the highly potent drugs now available, are less conclusively documented than the short term effects. A large number of studies with animals have consistently demonstrated toxic effects at doses comparable to those taken by humans who smoke marijuana several times a day. Studies of human cannabis users have been contradictory in their results and in many cases the evidence is inconclusive. This is probably due to the fact that the correct types of long-term studies on humans have not yet been carried out. 
+            </p>
+          <p> When burned, cannabis cigarettes produce three times more carcinogenic 'tars' than tobacco and five times more poisonous carbon monoxide. Prolonged heavy use of the drug causes chronic bronchitis, cough, hoarseness, laryngitis and pre-cancerous changes in the lungs similar to those produced by tobacco smoke, except that the changes and lung damage occur more rapidly with cannabis smoke. Cannabis tar is directly carcinogenic in animals and earlier predictions that long-term cannabis use could lead to cases of cancer in humans are proving accurate in that cases of lung, head and neck cancer have been reported in young cannabis smokers. In addition, babies born to mothers who smoked cannabis were, according to one report, ten times more likely to develop acute nonlymphoblastic leukaemia than babies whose mothers did not smoke cannabis. 
+            </p>
+          <p> Cannabis is not usually considered to produce physical dependence, although tolerance to the effects occurs, and physical withdrawal symptoms have been noted after cessation of heavy use. Psychological dependence has been noted in some users. Cannabis increases the workload of the heart and people who suffer from heart disease, angina and blood pressure are particularly vulnerable to the adverse effects of cannabis. Another high risk group are those with pre-existing mental illness, particularly schizophrenia and depression, because cannabis may trigger off a relapse or make symptoms worse. There has been a steep increase in the number of patients admitted to Swedish psychiatric hospitals with a diagnosis of acute anxiety, delirium, schizophrenia and psychosis attributed to cannabis use. 
+            </p>
+          <p> Among the other known or suspected long term effects of continuous cannabis use are decreased sperm count and sperm mobility, interference with ovulation and pre-natal development and impaired immune response. There is now a considerable body of evidence concerning the adverse effects of cannabis on both male and female reproductive systems. Not only does the drug affect the secretion of hormones and the reproductive glands directly but it also inhibits sexual activity and produces long-term alterations in the development of the reproductive system in male and female offspring in test animals. In addition, cannabinoid metabolites are highly fat soluble and remain in the body for several weeks. During that time the chemicals are concentrated in areas of the brain known to influence various aspects of sexual behaviour as well as in the endocrine and sex glands. 
+            </p>
+          <p> There is also increasing evidence of problems arising if cannabis is smoked during pregnancy because the infant is exposed to the drug via the placenta and also through breast milk after it is born. Studies in the U.S. report that up to 27 <amp> per cent sign </amp> of pregnant women had used cannabis during pregnancy. The babies born to these mothers weighed less than those born to non-users and were significantly shorter in length. The cannabis babies had less muscle mass than normal and were more jittery, more irritable and less attentive. If the mother also used alcohol and tobacco, the combined effect of the three drugs was greater than any individual drug. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/105.00000</textSigle>
+            <title>Turlough</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>  Julian Reynolds, Catherine Coxon, David Hickie</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-030$A">
+          <div id="W2B-030$B">
+            <div id="W2B-030$C">
+              <head> ENFO – promoting care of the environment
+                        <hi rend="bold"> TURLOUGHS </hi>
+              </head>
+              <p>
+                <hi rend="bold"> TURLOUGHS are lakes which disappear for part of the year, leaving a floor covered with grasses, sedges and herbs. They occur in limestone areas west of the Shannon and are unique to Ireland. Their flora and fauna are very interesting, and if there is one in your area, it is an ideal site for an environmental study. Many turloughs have been drained and both arterial drainage and local drainage by farmers threaten those that remain. Some representative turloughs should be conserved, as it would be a tragedy if this unique part of our heritage were to disappear forever. </hi>
+              </p>
+              <head>
+                <hi rend="bold"> SEASONAL LAKES </hi>
+              </head>
+              <p> If you drive through part of eastern Galway or Mayo in the winter, you will see a large number of lakes and you may be puzzled that they do not appear on the half-inch to a mile Ordnance Survey maps. If you look a bit closer, you may wonder why some of the lakes have walls leading down into them, or telegraph poles in the middle of them. Then, if you return to the area in the summer, you will find no sign of these lakes, but instead a landscape with green fields and grazing cattle. Only a few clues, such as the black moss covering the stone walls, indicate that these are no ordinary fields. In fact, they are turloughs.
+                    </p>
+              <p> Turlough, or <hi rend="italic"> turlach </hi> , is the word used to describe these strange disappearing lakes which are found in limestone areas of Ireland, mostly west of the Shannon. The name is thought to come from the Irish "tur loch", meaning dry lake. The features are unique to Ireland and they are an important part of our heritage. They are of great interest to many scientists: geomorphologists (who study landforms) are interested in how turloughs were formed, hydrologists (who study water) try to explain what makes turloughs flood, botanists study the unusual vegetation which covers the <sic> turloughs </sic>
+                <corr> turlough 's </corr> floor and zoologists study the animals associated with the turloughs. Because they have so many interesting aspects, turloughs provide an ideal opportunity for local environmental studies. 
+                    </p>
+              <p> Turloughs are mostly found on the central lowlands west of the Shannon, in counties Galway, Clare, Mayo and Roscommon, although a few are also found elsewhere, e.g. in Limerick, Sligo and Longford. Most turloughs flood in the autumn, usually some time in October, and then dry up some time between April and July. However, some turloughs in the Burren can flood at any time of year in a matter of a few hours after heavy rainfall and they may empty again a few days later. A few turloughs are affected by the tide: in the summer, Caherglassaun Lough, which is 5 km from Galway Bay, can be seen to flood and empty again twice every 24 hours. Most turloughs flood to a depth of about 2 metres but some are much deeper: for example, some of the turloughs near Gort are about five metres (16 ft.) deep in midwinter. Turloughs are variable in size: the largest turlough in Ireland, Rahasane, which lies to the west of Craughwell in Co. Galway, covers about 250 hectares (or 500 football pitches!).
+                    </p>
+              <head>
+                <hi rend="bold"> WHY DO TURLOUGHS OCCUR? </hi>
+              </head>
+              <p> All of the turloughs are found in limestone areas. This is because limestone is a unique rock in that it can be dissolved away by rainwater, particularly rainwater that has become acidic by picking up carbon dioxide as it passes through the soil. The cracks or <hi rend="italic"> joints </hi> in the rock become widened to such an extent that eventually all of the rain falling on the limestone disappears underground and the water moves through the rock openings ranging from cracks a few millimetres wide to large cave passages. The limestone is then said to <hi rend="italic"> karstified </hi> . To the east of the Shannon, the limestone is often covered by great thicknesses of glacial drift deposited during the Ice Age but in many areas to the west of the Shannon where the limestone is pure and the drift cover is thin, there is no proper surface river network. In these areas, rainfall disappears underground, flows through openings in the rock and then rises at springs: large springs are found to the west of the area, flowing into Lough Corrib and Galway Bay. In winter, when the underground water level (or <hi rend="italic"> water table </hi> ) rises, and when the underground flow routes to the springs are not capable of dealing with the amount of water entering them, groundwater may appear temporarily at the surface in the form of a turlough. Many of the rivers seen in these areas today are largely artificial, constructed by drainage engineers from the nineteenth century to the present day, often linking a series of turloughs. For example, much of the Clare river is artificial and the middle section of its course used to be a huge turlough – the largest in Ireland at 650 hectares.
+                    </p>
+              <head>
+                <hi rend="bold"> SWALLOW HOLES </hi>
+              </head>
+              <p> Turloughs usually fill and empty at particular places on the floor: sometimes an actual hold or passage is visible but more often a hollow with stones in the bottom is all that can be seen and it may not be easy to recognise when it is dry in midsummer. Some turloughs have a spring at one place and a swallow hole somewhere else on the floor where water drains away, but many turloughs fill and empty through the same hole. A few turloughs are filled by rivers and streams flowing into them as well by water rising from underground.
+                    </p>
+              <p> The water sinking in the swallow hole travels underground to a spring, which may be several kilometres away. In most rock types, groundwater flows very slowly (from just a few centimetres to a few metres per day), but in karstified limestone the flow rate can be quite rapid: water from the turlough may flow underground to a spring at a rate of 100 metres per hour or more. 
+                    </p>
+              <head>
+                <hi rend="bold"> CALCIUM CARBONATE </hi>
+              </head>
+              <p> Limestone is made up of the mineral calcium carbonate and as water passes through limestone, it dissolves the calcium carbonate – this is what makes the water hard and causes furring on the inside of kettles, as the calcium carbonate comes out of solution when the water is heated. Something rather similar happens in turloughs – water which has picked up a lot of calcium carbonate during its underground travel rises in the turloughs and then some of the calcium carbonate comes out of solution and forms a white deposit. So if you visit a turlough which has emptied recently, you may notice a whitish coating on the vegetation on the turlough floor. (The reason why the calcium carbonate is deposited is that when the water comes to the surface in a turlough, it loses carbon dioxide back to the atmosphere and to plants which use it for photosynthesis and this loss causes the calcium carbonate to come out of solution.) 
+                    </p>
+              <p> Sometimes a special whitish deposit which has the appearance of sheets of paper is found in the turloughs when they dry up. This "algal paper" is made up of filaments of an alga which grows abundantly in warm weather and is then left to dry out in sheets when the turlough empties. 
+                    </p>
+              <p> If you look at a section in a drainage ditch in a turlough, or if you make a hole with a soil auger, you may find a white or cream coloured deposit beneath the vegetation cover, or beneath a layer of peat. This is often called "white marl" – again it is made of calcium carbonate. About half of the turloughs contain marl: it was deposited at a time several thousand years ago when these turloughs were not seasonal lakes but were flooded all year round. 
+                    </p>
+              <head>
+                <hi rend="bold"> PLANT AND ANIMAL LIFE </hi>
+              </head>
+              <p> Most turloughs have a springy, short-cropped turf of grasses, sedges and herbs. In the Burren, the highwater-mark is often shown by the shrubby cinquefoil with its attractive yellow flowers, and meadow rue. Just below, dog violets are abundant and in some turloughs there may be a dense sward of the rare sky-blue turlough violet about one metre further down. Other characteristic plant of turlough sides include orchids and speedwell. About half way down the sides, and across the bottom of shallow turloughs, silverweed may blanket almost all other plants. 
+                    </p>
+              <p> If the turlough has a marshy zone near the swallow hole, there may be mint, water-cress, pond-weeds, aquatic buttercups and knotgrass, living a semi-terrestrial existence. But most swallow holes when dry are represented by a jumble of rocks, clothes with blackish and dried aquatic mosses (<hi rend="italic"> Cinclidotus </hi> , the turlough moss and <hi rend="italic"> Fontinalis </hi> , usually found in streams). 
+                    </p>
+              <p> Many people think that turloughs have no animal life. However, frogs and newts may spawn there and sticklebacks may survive in the larger turloughs, retreating into underground cracks in the rock when waters are low. Shrimp and water-lice do the same and where fish are absent there may be a rich fauna of delicate water-fleas and fairy-shrimp, some unknown elsewhere in Ireland. These hatch and grow fast, finding safety in the warm fishless waters. Flatworms and snails are also often abundant; these pass the dry periods in springmouths or marshy areas. 
+                    </p>
+              <p> When turloughs retain some water all year, they may be important bird haunts. Rahasane in Galway is famous for its white-fronted geese, whooper swans, wigeon, teal and many waders in winter. Others may not suit the large migratory birds, but their importance to resident warblers and other small birds has never been studied. 
+                    </p>
+              <head>
+                <hi rend="bold"> DRAINING OF TURLOUGHS </hi>
+              </head>
+              <p> Turloughs provide good summer grazing for cattle, sheep and horses, partly because of the annual deposition of lime-rich silt. However, for many years, farmers have seen the winter flooding as a waste of potential and they have attempted to find some means of draining the turloughs, so that they can be used all year round. This has usually been achieved by digging an artificial channel through the turlough, which is capable of carrying away any water entering the turlough from surface or groundwater – such channels have often been constructed as part of major arterial drainage schemes. At least a third of the turloughs in Ireland have already been drained and more are being drained each year. This has very serious consequences from the point of view of the environmentalist – the unique flora and fauna of the turlough cannot survive in the absence of seasonal flooding. Even for the farmer, the benefits are not always as great as anticipated – the stopping of the annual limey silt deposition means that the soil may become impoverished and fertilisers must be used. Also, the poorly developed, delicate soil may not be able to withstand the presence of animals through the winter. 
+                    </p>
+              <p> To suggest that no more turloughs should be drained is a rather extreme view but the case for conserving at least some of them is very strong – it would be a great loss if this unique part of our heritage were to disappear for ever. 
+                    </p>
+              <head>
+                <hi rend="bold"> THINGS TO DO </hi>
+              </head>
+              <p> If you have a turlough near you, there are plenty of things to observe and record. You can measure the changes in water level over a year by placing a series of measuring sticks in the turlough. When the turlough is filling and emptying, you can locate the springs and swallow holes. 
+                    </p>
+              <p> Notice how the vegetation changes as you move down the slope to the deepest parts – can you relate these changes to the time for which each part is flooded? If you have a soil auger, you can investigate the deposits: you are most likely to find peat or marl on the bottom, and glacial till (with clay and larger stones) on the slopes. Is the changing vegetation related to the type of deposits? 
+                    </p>
+              <p> Does your turlough have a characteristic plankton or other animal forms? How quickly does the animal community develop? Are there fish present and if so, what type? Do birds visit the turlough in the winter? Learn to identify the birds and carry out regular counts through the winter. Does the presence or absence of birds seem to relate to a particular feature, such as the shape <sic> of </sic>
+                <corr> or </corr> size of the turlough, reedy vegetation, or the other animals present? 
+                    </p>
+            </div>
+          </div>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/106.00000</textSigle>
+            <title> Zoo Crack</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Mark Challis</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-021$A">
+          <head> Who 's New </head>
+          <head> by Mark Challis, Assistant Zoo Manager </head>
+          <p> One ring-tailed lemur and two black and white ruffed lemurs have been born, both rare species from Madagascar. The ruffed lemurs caused much confusion as we were unsure which of the three females was the mother, as all three were presumed to be pregnant, and all three appeared to be caring for the infants! After some careful observation (and a little guesswork) it would appear that 'Mandy' is the proud mum. 
+            </p>
+          <p> Also among the primates, there has been a birth in the Colombian spider monkey group (the second this year), one Goeldi 's monkey and two golden-headed lion tamarins. All these species are endangered in the wild, particularly the golden-headed, whose wild population is in the low hundreds. We are currently the only zoo in the UK breeding this handsome and critically endangered species. 
+            </p>
+          <p> The breeding female Weddell 's tamarin gave birth to twins, which will grow up in their large family group, in our off-show breeding accommodation, the group being part of an ongoing behavioural research project at the zoo. 
+            </p>
+          <p> Two mara have also been born, as have a litter of meerkats, though it will be some time before they are old enough to leave their underground den and be seen out in the enclosure. 
+            </p>
+          <p> Among the hoofstock, one blackbuck and one red lechwe have been born, as has an attractive zebra, born to the mare 'Amo', which is now out in the large paddock shared with the giraffe and the ostrich. 
+            </p>
+          <p> The birds have similarly benefited from the onset of summer, and we have already had successful hatchings from bare-eyed cockatoos and red-crested pochard, while a number of other species have recently laid eggs. 
+            </p>
+          <p> The rare domestic breed we keep have also been productive, with the births of two Dexter cattle, five Ronaldsay sheep, fourteen Tamworth pigs, nine Berkshire pigs and eight hybrid pigs, the result of a meeting between a Tamworth boar and a Berkshire sow. 
+            </p>
+          <p> There have been a number of exciting new arrivals including ten species of waterfowl that are now on the lake, and several new species of birds for the new Bird Park, including satyr and Tamminck 's tragopans, Palawan peacock pheasants, pink pigeons and Bali mynahs. Parrots have also been moved into the new aviaries and Asian short-clawed otters have arrived for the new exhibit opposite the sea lions. 
+            </p>
+          <p> A trio of fat-tailed dwarf lemurs arrived on breeding loan from Bristol Zoo. Infrequently kept in European collections they are rather shy though very attractive, should you see them in their enclosure in the Nocturnal House. 
+            </p>
+          <p> Perhaps most exciting of all, the old Hyena Enclosure now has four African wild dogs in residence. Severely threatened in the wild, extinction for this species has been forecast, within the next 20 years. Now part of a European Breeding Programme (EEP), the African wild dog has proved a difficult animal to maintain longterm in captivity. Our four brothers on loan from Amsterdam Zoo, will shortly be joined by a single female from another European Zoo. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/106.00001</textSigle>
+            <title> Zoo Crack</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Mark Challis</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-021$A">
+          <head> BIRTH OF BABY GORILLA </head>
+          <p> Belfast Zoo proudly announces the birth of Djamba, a male gorilla, born to Delilah aged 32. 
+            </p>
+          <p> This is only the second successful gorilla birth in Ireland, and the first to be reared by its mother. The previous gorilla, born at Dublin Zoo, was hand-reared. 
+            </p>
+          <p> Allowing a baby gorilla to be mother-reared carries potential risks because the reaction of the other gorillas in the social group can be unpredictable, as can be the ability of the mother to cope with her offspring. 
+            </p>
+          <p> Delilah was brought to Belfast Zoo from across the water when her mate died, having already successfully reared seven offspring. Although relatively ancient at 32, the move has provided her with a new mate and also gives the other young Belfast gorilla females an opportunity to observe the rearing process, thereby strengthening their own chances of breeding successfully. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/106.00002</textSigle>
+            <title> Zoo Crack</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Mark Challis</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-021$A">
+          <head> BELFAST ZOO CHIMPS DEVELOP NEW TECHNIQUE IN TERMITE FISHING </head>
+          <p> One of the finishing touches to <sic> Belfasts </sic>
+            <corr> Belfast </corr> Zoo 's million pound award-winning Primate Enclosure built in 1991 to house some of its star attractions, a colony of chimps and a family of gorillas, was an artificially created termite mound. 
+            </p>
+          <p> Situated in the Chimpanzee House, the termite mound is designed to provide intellectual stimulation for the chimps and is similar to those found in the wild, with one exception; as termites are fairly difficult to come by, the zoo has substituted different types of jam. The idea is that the chimps dip sticks into the holds in the mound to reach the jam at the other end. 
+            </p>
+          <p> Recently, however, primate keeper, Alyn Cairns has noticed that the clever chimps have devised a more effective method of jam fishing. They have discovered that chewing on the ends of the sticks to make them more brush-like and absorbent means that they can scoop up more jam! 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/106.00003</textSigle>
+            <title> Zoo Crack</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Mark Challis</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-021$B">
+          <head> Seeing Sense by Kathleen Mannis Zoo Education Officer </head>
+          <p> Sight is the sense which we use most of all and our eyes are very highly developed with only birds able to see better than we do. For many animals sight is not important and they therefore have only very simple eyes which can detect light/darkness and movement. 
+            </p>
+          <p> To form a clear image a lens is needed to focus. Most vertebrates (animals with a backbone) have this type of eye. Birds have the best sight of all, birds of prey having remarkable vision. 
+            </p>
+          <p> Not every animal can see in colour as we do. Dogs cannot distinguish red from green and most nocturnal animals have very poor colour vision. Once again birds are the best and can see many more hues than we can. Some animals can see wave-lengths that are invisible to us. Piranha fish and goldfish can see infra-red used in remote control beams, while most insects can see ultra-violet. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/106.00004</textSigle>
+            <title> Zoo Crack</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Mark Challis</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-021$C">
+          <head> "The Environment – A Sustainable Future" Billy McAlister, architect, town planner and environmental assessor </head>
+          <p>
+            <hi rend="bold"> Ulster Tatler has for some time been aware that environmental issues are playing an ever-increasing part in our lifestyle. We have asked Billy McAlister, Architect, Town Planner and Environmental <sic> Asessor </sic>
+              <corr> Assessor </corr> to edit a series to ensure that Ulster Tatler makes a necessary contribution to the environment initiative. 
+            </hi>
+          </p>
+          <p> Everyone 's talking about it, most people know something about it and a few people are very concerned about it – THE ENVIRONMENT.
+            </p>
+          <p> WHY, all of a sudden, are we being subjected to a massive media promotion of matters relating to our past, present and future living standards, highlighted by disasters causing irreparable damage to our world resources? Every day there is some reference to degradation and destruction at global, national and local levels. Have values changed and living habits altered to an extent out of all proportion with patterns of earlier long established standards? The answer is that the situation has been slowly creeping up on us and at an increasing rate over the past 50 years. 
+            </p>
+          <p> A SUSTAINABLE ENVIRONMENT boils down to maintaining a balance between the use of the world 's resources and the number of human beings using them. Tribes, in earlier times, and in some parts of the developing world today, maintained this balance by controlling their population directly related to the availability of resources, such as food, and, materials for clothing, shelter, and weapons. If the balance was or is not maintained the small community either had to split and move away, or as has happened, in many cases disappeared. The situation can also be applied to a certain degree affecting much larger communities and even nations and dynasties looking back through history. Maintaining a state of balance is best likened to a see-saw on which two equal sized children can maintain a simple equilibrium. Once, however, one child, through over-eating, weighs heavier than the other, the resultant state of imbalance creates difficulties for each of them. 
+            </p>
+          <p> ACCENTUATING the difficulties in maintaining this status quo is another aspect, that of CHANGE, an inevitable dimension brought about by "man 's" natural ability and motivation for invention and innovation. Since the advancements brought about by the Industrial Revolution, which were also reflected in commerce and agriculture, CHANGES have been increasing in rapidity, in complexity and scale. In transport terms alone, the movement from the horse-and-carriage to the super-sonic jet-propelled aeroplane and the "off-the-shelf" 100 m.p.h. motor car, has been achieved in less than 100 years! However, these new forms of transport require fuel, and so followed the exploitation of oil which has gone along apace over this period. The same scenario applies to food production, and the over-demand of a dynamic increase in world population necessitating the introduction of special innovations in framing practices and animal breeding and husbandry. 
+            </p>
+          <p> ALTHOUGH "warning bells" were set ringing after the last war indicating that continued "progress" (for want of a better word) of this nature and magnitude could lead to problems of scarcity of natural resources, little notice was taken, even though the effects of the consequences which might ensue were known and well publicised. It was not until events took place which had considerable impact on human beings and their desired lifestyle, did the "person in the street" become aware that there was a threat to their own personal well-being. We, who are old enough, can well remember the London Smog after the last war over a period of three weeks, when an estimated 50,000 deaths were attributed to breathing the over-polluted air, the Abervan slag-heap slippage, when no regulation of this type of waste product was in place, the first oil tanker spillage of the Torre Cannon, the Bhopal Chemical Factory emission in India when 3,000 died and the effects are still being felt, as with the Chernobyl nuclear fall-out. The Exxon Valdes oil tanker spillage in Alaska has been followed by one nearer home recently in Shetland, and oil fires pollution from the Kuwait oil fields shocked us all at the time. Closer to home we have the continued controversy of Selafield effects making us realise the gravity of the earlier near disaster fall-out at Three-Mile Island in the U.S.A.; even nearer home, the Du Pont accidental chemical emission into the Foyle, which probably got little or no international coverage, which makes one wonder if these sort of events are a daily <sic> occurrence </sic>
+            <corr> occurrence </corr> on a world scale. 
+            </p>
+          <p> SOME major events which affect many square miles of territory bring conflict between neighbouring nations, with Scandinavian countries pointing the finger at Britain for the effects of acid rain on their land and forests, or, on a much greater scale, the U.S.A. and Europe accrediting changes in weather and climate to the massive scale of the destruction of the South American rain forests. 
+            </p>
+          <p> Led by initiatives in the United States dating back to the early 1970s and the recent dedication of the European Community to effect environmental policies attempting to ensure a sustainable environmental future, considerable compliance requirements are now in place and these are supported by the appropriate legislation to effect severe penalties (fines up to <amp> pound sign </amp> 10 million) on the "polluter" and making avoidance of duty of care relevant to the high risk of legal action. 
+            </p>
+          <p> As this series progresses, the author hopes to examine the issues which form the make-up of our environment, such as flora, fauna, climate, traffic and human beings and their cultural and economic needs, etc. relating these to the constructive viewpoints that a sustainable future can be achieved providing we all have a sense of awareness and a will to create and then maintain a worthwhile world for generations to follow. 
+            </p>
+          <p>
+            <hi rend="bold"> Only 40 years ago we saw our planet from space for the first time. We saw it as a small unsuspended ball in space, comprising, not, as we think of it as people, of buildings and highways, but of soils, water, vegetation and clouds and it is these we must preserve. </hi>
+          </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/107.00000</textSigle>
+            <title>Fortnight</title>
+            <domain>PopSocSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Eithne McLaughlin</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-013$A">
+          <head>
+            <hi rend="bold"> Peace, with justice </hi>
+          </head>
+          <p> The Commission on Social justice, set up by the late British Labour leader, John Smith, in December 1992, reported in late October. It had received some 450 submissions and held 12 outreach visits around the UK, as well at 16 full commission meetings and as many again of policy panels. 
+            </p>
+          <p> The commission 's 400-page report was described variously as dry and dense, and rambling and thin. For some on the right, it represented an expensive wish list, while for the radical left it was a revolution that wasn't; the centre left, however, saw it as a solid basis for planning into the 21st century. The report received almost no coverage in the Northern Ireland media, demonstrating what a long road remains to be travelled in creating a 'new news' – as some broadcasters apparently call the post-ceasefires agenda. 
+            </p>
+          <p> No member of the commission expected it to have the impact of the Beveridge report, even though it was described as <quote> 'rethinking Beveridge' </quote> . The national and international scene is too complex and fast-changing for a single report today to have such enduring impact. Even more important, though, were the greater consensus in the 30s and during the war on how to develop a welfare society, the post-war expectation of low living standard and privation, and the tolerance of high taxation the war had established. By contrast, the problems the commission sought to address were the lack of consensus of the 80s and 90s, and the associated intolerance of high public expenditure and taxation. 
+            </p>
+          <p> That lack of consensus today owes everything to the huge growth in inequality over the last 15 years, primarily market inequality. The Beveridge welfare state proved ineffective in ameliorating, still less reducing or preventing, inequalities originating in the market. Even if the value of social security benefits had been maintained in relation to average earnings over the 80s and 90s, inequality would still have grown enormously. The lesson we should have finally learnt is that tax and benefit transfers alone can have only limited effectiveness, set against market inequalities. Cash benefits have not proved the answer to social injustice and exclusion and neither has that other hope of the post-war welfare state – the education system. 
+            </p>
+          <p> Once seen as providing the key to equality of opportunity, the education systems of England and Wales, Scotland and Northern Ireland have all failed to overcome the disadvantages experienced by many of family and class. Northern Ireland has both the best and the worst record within the UK – the best GCSE and 'A'-level results and the highest proportion of unqualified school-leavers. A quarter of the 1991-92 school-leavers in Making Belfast Work areas let with no GCSEs (18 per cent in Northern Ireland as a whole). One in seven and one in five young adults in the UK as a whole have problems respectively with basic literacy and numeracy. The UK is the only developed country, apart from Russia, still to have a school-leaving exam at 16. And it is not coincidental that the children of unskilled manual workers are one-tenth as likely to go to university as those of professionals. 
+            </p>
+          <p> Although many of the 'chattering classes', in their responses to the report, sought to defend 'free' university education, on grounds of equality of opportunity, the very different starts in life that people have mean some are very much less likely to benefit from 'free' higher education than others. Meanwhile, many are unable to benefit from vocational education and training due to unresolved literacy and numeracy problems, carried over from school into adult life. That is why the commission regarded extension of free education earlier into a child 's life (universal nursery education for all three- and four-year-olds by the year 2000) and literacy and numeracy guarantees (with appropriate quality reading and numeracy recovery schemes for primary children) as more important public expenditure priorities than expansion of – partially free – higher education. 
+            </p>
+          <p> The problem of a minority of young people still leaving the education system at 16 requires, first, radical unifying of 14-18 vocational and academic education through a modular baccalaureate (as against the divided NVQ/GNVQ/A-level system) and, secondly, maintenance allowances for young people from the lowest income households in the 16-18 age group, whether they stay on at 'ordinary' schools or attend sixth-form or further education colleges. Without this, all the 'free' higher education in the world will fail to erode the increasing divide between people with no qualifications and those with some, in terms of adult life-chances and the capacity to exert control over one 's life. 
+            </p>
+          <p> Post-18 vocational and academic education and training should be similarly addressed. The commission proposed a Learning Bank, with individual learning accounts – first, for all future 18-year-olds and long-term unemployed people and long parents on benefits, gradually extending to other vulnerable groups of the population, and finally including everyone. People would be able to choose the form of their entitlement – full-time, part-time, in a single three-year span or spread over any number of years in blocks – to suit them. This would level the playing field between the vocationally and academically oriented, between those from manual and white-collar backgrounds, between early and somewhat later developers, and between those who need to reconcile education with family commitments and those who do not. 
+            </p>
+          <p> Such a massive expansion could not be cheap or easy. But about 10 per cent of jobs in Europe are destroyed each year and, in such a world, the obsolescence of human capital is a serious threat. Basic literacy and numeracy, and second and third (and even more) chances of education and training will be as fundamental to social justice in the 21st century as unemployment, sickness and invalidity benefits have been in the 20th. 
+            </p>
+          <p> The commission proposed that state support would take the form of individuals being credited in their Learning Bank accounts with four-fifths of the average fees of a three-year course in higher education. 
+            </p>
+          <p> They would borrow the remainder of any fees needed and their income maintenance, the maximum for which would be higher than the current combination of grants and student loans. This debt would be repayable only if the person 's investment in the education and training paid off – for example, when they reached average earnings – and repayment would be put on hold should their earnings fall below average again. Probably the most efficient and fair mechanism would be a surcharge on national insurance contributions. 
+            </p>
+          <p> The failure of the UK education and training system has not only been the enduring class differences in qualification and occupational levels but also the inability to produce internationally competitive skills and qualifications. This, in turn, is related to the growth of long-term unemployment and low-wage, insecure and unprotected employment, which, combined with more restricted access to social security benefits, have led to a 17 per cent fall in the real incomes of the poorest 10 per cent of the UK population between 1979 and 1992 – when average incomes rose by 36 per cent. 
+            </p>
+          <p> At the 1994 Conservative conference, the employment secretary, Michael Portillo, triumphantly proclaimed the 'success' of Britain 's deregulatory employment and social policies: <quote> "Work has changed, changed, completely and changed forever," </quote> he said. Mr Portillo 's 'success' has been low job growth and deteriorating wages and security of employment, at least 40 per cent of which is now part-time, casual or self-employment, mainly in the non-tradeable – that is, non-international – sector. 
+            </p>
+          <p> These are issues in which Northern Ireland has a strong stake. More than a quarter of its registered unemployed have been jobless for more than three years; in MBW areas, this rises to a third. Northern Ireland has also the lowest manual wages in the UK and probably a higher proportion of employers offering work premised on the availability of social security benefits to top up low-wage, insecure, casual or part-time employment. 
+            </p>
+          <p> The wage system, as much as social security, is an expression of social relations and this is most evident in the non-tradeable sector. This has long been recognised in Japan, where a high-productivity tradeable sector has been used to expand job opportunities at reasonable pay in the 'home', non-tradeable sector. Here, the commission proposed minimum wage legislation; employment protection legislation to apply after six months employment instead of two years, to part-timers as well as full-timers; and gradual replacement of family credit and income support, which depress rates and labour supply, by a modern and more comprehensive social insurance system, including part-time benefits. These aim to redress the balance between the tradable and non-tradeable sectors, clarify the responsibilities of employers vis-à-vis the state, and reassert the social nature of employment in such services as parks, cafés, bars and private households. 
+            </p>
+          <p> The failure to recognise and value work in the non-tradeable sector has not only affected most people 's quality of life but has helped long-term unemployment to accumulate. To tackle exclusion from the labour market, the commission recommended a Jobs, Education and Training programme. JET would seek to create a high-quality, active, customer-oriented Employment Service. The aim would be to put education and training for the long-term unemployed people who wish to move into self-employment, to offer lone parents additional help with childcare, and to develop intermediate labour markets – combining training and education with not-for-profit employment – particularly through the use of benefits as wage subsidies. 
+            </p>
+          <p> Such UK-wide programmes, however, tend to be less effective in the most disadvantaged regions beset by multiple disadvantage. There are many area-based examples of good practice and innovation – some in Northern Ireland – but most are inhibited by short-term, inadequate and often restrictive funding criteria. Overall, too much money is still being spent on property-led, city-centre development, and too little on people-led, community development. 
+            </p>
+          <p> The commission proposed funding of Community Development Trusts of locally-elected people from small areas – about 5,000 households or 10,000 people – so that communities could influence regeneration. Initially, these would cover the 250 most <sic> disadvantages </sic>
+            <corr> disadvantaged </corr> areas of the UK, and the programme would have a lifetime of ten years. This would reach 2.5 million people, probably a quarter of the unemployed and proportionately more long-term unemployed. Each CDT would be granted <amp> pound sign </amp> 100 per resident per year, up to a maximum of <amp> pound sign </amp> 1 million. In addition to these funds, CDTs could draw on wage subsidies to develop intermediate labour markets. Their success would be judged by improvements in the quality of life and environment of their areas. There would be an employment spin-off but that should not be the principle measure of performance, and certainly not the sole criterion for funding. 
+            </p>
+          <p> The commission 's proposals reject the Fabian notion that governments know better than citizens what they need. Accommodation to the world of rapid and complex social and economic change, as well as participative democracy, require devolution of political power – implicit in the commission 's proposals on community regeneration and the Learning Bank. But neither the social and economic policies the commission recommended, nor such associated devolution, conforms to the non-interventionism (in the market) and centralism (in formal politics) of recent Conservative administrations. 
+            </p>
+          <p> Indeed, more and more power has been drawn to Westminster and this must be reversed – through devolved political assemblies in the four components, and ultimately all the regions, of the UK. Yet, whether or not Scotland and Wales achieve devolution, an assembly in Northern Ireland may occur. And it might be permitted to adopt more interventionist economic and social policies: the UK government has itself been much more interventionist in the region. 
+            </p>
+          <p> As it should be. To build an inclusive society in Northern Ireland, through such social and economic policies as proposed by the commission – as well as through the formal political process – must be a prerequisite of peace with justice. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/109.00000</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Nuala Haughey</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-016$A">
+          <head>
+            <hi rend="bold"> Sex, lies and smoking </hi>
+          </head>
+          <p>
+            <hi rend="bold"> All the ash trays were removed form the hotel in the coastal town of Newcastle, Co Down, where the world 's first International Conference on Women and Smoking was held last month. </hi>
+          </p>
+          <p> The 150 delegates – 30 from women 's groups in Northern Ireland – had come to share experiences and develop international, national, local and personal action plans, to counter the smoking epidemic that claims around 300,000 female lives in the world per year. 
+            </p>
+          <p> Organised by the Ulster Cancer Foundation, the Health Promotion Agency for Northern Ireland and the International Union Against Cancer, the conference was a sequel to the seventh World Conference on Smoking and Health, held in Perth two years ago. 
+            </p>
+          <p> It was, said Pattie White, co-chair of the UK 's Health Education Authority, the fruit of a decade of pressure on the male-dominated tobacco-control movement – pressure from women to prove that <quote> "women smoke for different reasons from men" </quote> and should be treated and studied differently. 
+            </p>
+          <p> This was the theme of the keynote address, by Ilona Kickbusch, director of Lifestyles and Health (Europe) at the Geneva headquarters of the World Health Organisation. Wearing a tobacco-brown suit and flame-orange polo-neck sweater, Dr Kickbusch, with her short greying hair, resembled a super-slim cheroot. 
+            </p>
+          <p> Placing female smoking in the context of women 's lack of power in society and their daily role as childminders and housekeepers, she urged an <quote> "integrated response to the notion that health is created and lived by people within the setting of their everyday lives, where they learn, where they work, where they play and where they love. All these things are relevant to smoking." </quote> She called for an emphasis on health promotion, both personal and societal, with a focus on low-income women, who smoked much more than their professional counterparts. 
+            </p>
+          <p> The combustible Ellen Gritz from the University of California was equally appropriately clothed in an ash-grey suit. Quoting WHO figures in rapid-fire succession, she delivered a paper on the Health Effects of Smoking on Women in less time than it would take to say <quote> 'May I have a packet of Virginia Slims menthol ultra lights, please'. </quote>
+          </p>
+          <p> Dr Gritz revealed that, while trends in lung cancer mortality were levelling off among men in developed countries, for women they were <quote> "astronomically sky-rocketing". </quote> In Scotland, Japan and the US, lung cancer had surpassed breast cancer as the leading cause of cancer mortality in women. <quote> "We do not know how to prevent breast cancer, but we do know how to prevent lung cancer and for this to happen is an abomination," </quote> she said.
+            </p>
+          <p> Grace Burnside, deputy director of the Ulster Cancer Foundation, described the extent of this <quote> "preventable tragedy" </quote> in Northern Ireland: claiming one out of every six lives, tobacco killed more people than car accidents, suicides, illegal drug use, AIDS and the 'troubles' combined. Ms Burnside called for the targeting of at-risk age groups, through community programmes such as the successful peer-led Teenagers Against Smoking (TASK) and the classroom-based Smokebusters. 
+            </p>
+          <p> Working groups on Raising Awareness and Involving Women in Tobacco Control shared a wide range of experiences from many countries. Scandinavians boasted about their smoke-free universities and hospitals. Indian delegates stressed prevention rather than cessation programmes in a context where tobacco chewing was more common than smoking and fewer than 5 per cent of women smoked. Doctors from the new democracies of central and eastern Europe spoke of the rapid growth in western tobacco advertising since the political upheavals of the late 1980s. <quote> "One of the great achievements of democracy," </quote> remarked one Polish delegate wryly.
+            </p>
+          <p> This 'great achievement' was analysed further by Amanda Amos, a lecturer in health education at Edinburgh University. <quote> "The targeting of women entered a new stage in the late 1960s with the introduction of cigarette brands aimed exclusively at them," </quote> Dr Amos said. Virginia Slims, Caprice and Eve were a few of the brands <quote> "made with women in mind". </quote> What they had in common was an emphasis on slimness, ultra-lightness and mildness – all perceived as desirable female attributes. She quoted the marketing chief of the company that produced Marlboro as saying: <quote> "I knew thinness was a quality worth talking about – it 's an American obsession." </quote>
+          </p>
+          <p> While advocating a ban on tobacco advertising, Dr Amos argued that this would not necessarily lead to fewer positive images of women and smoking in magazines. On the cover of a recent Italian <hi rend="italic"> Vogue </hi> , Linda Evangelista had posed with a cigarette under the headline 'New Look for 92', and 19 pages in the same magazine had shown fashion models smoking. This "worrying trend" was also prevalent in British fashion magazines, like <hi rend="italic"> Cosmopolitan </hi> and <hi rend="italic"> Vogue </hi> , she said. 
+            </p>
+          <p> Perhaps more worrying than the fact that cigarettes are used to control weight and suppress appetite was the suggestion by Lorraine Greaves from Canada that they were also used to supplant emotions. 
+            </p>
+          <p> A sociologist who has worked with battered wives, Prof Greaves said women used smoking more for the <quote> "suppression of negative emotions". </quote> One woman had told her that smoking was like <quote> "sucking back her anger" </quote> , so she did not cause trouble. Prof. Greaves also spoke of the vital <quote> "bonding function" </quote> of women smoking together, particularly in an environment hostile to smoking. 
+            </p>
+          <p> The conference closed with a demand for <quote> "a comprehensive, woman-centred global strategy, which will reduce the inequity women face and will unite and support them in action to prevent and reduce tobacco use among women and girls". </quote> There were pledges to lobby politicians and decision-makers, calls for alliances with journalists and editors to ensure their magazines were not consciously or unconsciously promoting smoking, a commitment to a follow-up conference in two years, closer networking in the interim, a plethora of local, national and international initiatives and the targeting of specific age groups and classes.
+            </p>
+          <p> No one, however, asked the surreptitious smoker who had been slyly puffing in the ladies ' loo for three days to declare herself. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/109.00001</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Nuala Haughey</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-016$B">
+          <head>
+            <hi rend="bold"> Divorced from reality </hi>
+          </head>
+          <p>
+            <hi rend="bold"> Two years ago Patricia Reilly was found guilty of bigamy. </hi> She wept in a Dublin courtroom as the judge pronounced a nine-month suspended sentence, against which she is appealing. Living in a country where there is a constitutional ban on divorce, she married for a second time while her first husband still lived. Under section 57 of the 1861 Offences Against the Person Act, she thereby committed a felony, punishable by seven years penal servitude or two years imprisonment. 
+            </p>
+          <p> According to the 1991 Labour Force Survey, there are 47,000 separated people in the republic, for most of whom divorce recognised by the state is not an option. The Divorce Action Group claims that many will not admit to being separated – it estimates that 60-70,000 people have parted from their spouses. 
+            </p>
+          <p> Among them is Catherine. A mother of a six- and eight-year-old, three years ago she took out a barring order against her mentally and physically abusive husband, after he hit her across he face. 
+            </p>
+          <p> The first physical assault came when Catherine was five months pregnant with their second child. But the mental torture had, she said, been going on a lot longer – until it reached the stage where <quote> "at 12 o'clock at night, when my husband had gone drinking, I 'd be running around with the hoover so that there would not be any crumbs on the floor". </quote> When he did return in the early hours, she was abused for producing dried-up food that had been cooked earlier that evening: <quote> "Naturally it would be dry at two in the morning." </quote>
+          </p>
+          <p> With the barring order came custody, maintenance <amp> pound sign </amp> 25 a week until he lost his job – and weekly access to the children, supervised by her. She had two deeds of separation drawn up by solicitors, but on neither occasion did he arrive to sign the documents. Her council house is now in her name, although to gain that right she had first to undergo a technical eviction. 
+            </p>
+          <p> This entailed a farcical dance in which a bailiff stepped in, removed a token stick of furniture and stepped out. She returned the furniture indoors and the house was then hers. <quote> "Even though I have everything – I have maintenance, I have custody – it can be done finally. It would be a once off." </quote>
+          </p>
+          <p> The recent white paper on marital breakdown envisages a referendum to remove the ban on divorce. But while welcoming the paper, the divorce Action Group does not believe this will happen for another couple of years – beyond the life of this government – as the associated legislation dealing with joint ownership and pension rights must first be passed. 
+            </p>
+          <p> This leaves judicial separation as the only option open to someone like Catherine. It 's equivalent, said Mags O'Brien, the DAG chair, to the <hi rend="italic"> decree nisi </hi> applying in the north: <quote> "The only thing that is lacking is the right to remarry." </quote>
+          </p>
+          <p> As Catherine and her husband have been living apart, they would be granted a separation on the grounds of irretrievable breakdown, although she would be dependent on free legal aid to get it. So far this year, under the Judicial Separation and Family Law Act of 1989, 450 certificates for legal separations have been granted around the country – the waiting list is three to six months long. 
+            </p>
+          <p> What irks Catherine, though, is that the husband not being Irish, can return to his country, divorce and remarry while she remains married to him in the republic. <quote> "He can do it – why can't I? … I made a mistake, I chose the wrong person. I was in an abusive situation where I was abused mentally and physically. So why should I be punished by not being allowed a second chance?" </quote>
+          </p>
+          <p> There are only two ways of gaining such a reprieve – annulment or foreign divorce. Church annulments are pointless, according to Niall Courtney, secretary of DAG and a solicitor, as remarriage would be bigamy in the eyes of the state. About 20 state annulments are granted each year, on only three grounds: mistaken identity, impotence or non-consummation, or proof that either party had not intended to fulfil the marriage contract (if, for example, one of the parties was homosexual and had no intention of becoming involved in the heterosexual relationship). 
+            </p>
+          <p> The republic, said Mr Courtney, had <quote> "the most advanced and most highly developed nullity laws throughout the western world, because we do not have divorce. So instead we have these very good jesuitical arguments and theories." </quote>
+          </p>
+          <p> But procuring an annulment was expensive, he said, as psychiatric reports and tests were required and, if contested, if could cost <amp> pound sign </amp> 14,000 and take three to four years. Even if granted, it was not satisfactory if there were children involved, as they were rendered illegitimate when the marriage sank into the never-existed category. 
+            </p>
+          <p> The alternative is to seek a foreign divorce – an English postal divorce, if uncontested, costs <amp> pound sign </amp> 60. Half of the DAG committee had done this, said Ms O'Brien. While foreign divorces have no legal standing in the republic if the domicile seeks the divorce, they are recognised by the Revenue Commissioners, who treat any second relationship on <hi rend="italic"> de facto </hi> terms for tax purposes. 
+            </p>
+          <p>
+            <quote> "From a legal point of view," </quote> said Mr Courtney, <quote> "I do not see any point in doing it, but I can understand it from a human point of view." </quote> There was finally a psychological end to the first marriage. 
+            </p>
+          <p> The deputy leader of the Labour party, Ruairi Quinn, was divorced in the Dominican Republic – although he went only as far as Morales, an information agency on the North Circular Road in Dublin, to get it. Morales declined to comment as any contact it had had with the press had led to abusive anonymous phone calls. It cost Mr Quinn <amp> pound sign </amp> 850, but it allowed him to remarry in New York two years ago in front of some friends and family – although having to go to New York and sort out licences and residences had been, for both partners, <quote> "a pain in the ass". </quote>
+          </p>
+          <p> Not having his marriage recognised in the republic bothers Mr Quinn, and would certainly cause difficulties were he knocked down by "the proverbial 46A bus". Two widows would be competing for his 17-year Dáil pension, which, he said, would be frozen until a civil court decided the issue: <quote> "There would be no contest – it would be wife one." </quote> For his estate to be held by his second wife, it would have to be owned exclusively by her, which would entail legal costs and difficulties if she should die before him.
+            </p>
+          <p> Couples in second relationships still encounter problems, even where the house is jointly owned. Mr Quinn cited the example of a married couple in his Dublin constituency. One of the partners had the first marriage annulled by the Catholic Church, although not by the state. Now in a second marriage recognised by Canon law, they co-owned an <amp> pound sign </amp> 80,000 house. But, should one die, the other was only entitled to <amp> pound sign </amp> 10,800 tax free as he or she was <quote> "a person who is a stranger in blood". </quote> Mr Quinn said: <quote> "You end up paying <amp> pound sign </amp> 15,000 [corporation tax] simply to stay in your own house." </quote>
+          </p>
+          <p> June Tighe was shocked into self-sufficiency when her husband almost died of a kidney disease. Living in a council house with two young children but without any qualification, she overnight felt vulnerable, insecure and dependent – not only on her husband, but, during his illness, on social welfare. At the age of 27, after nine years of being a home-maker, she went to college to study fashion design, returning home in the evenings to cook fish fingers and argue over what she was and was not allowed to do. 
+            </p>
+          <p>
+            <quote> "To cope with that," </quote> she said, <quote> "you would have to be schizophrenic." </quote> She left. <quote> "There was nobody else involved, he didn't drink, he didn't beat me up – it would have been easier if he did. We just had nothing more in common." </quote>
+          </p>
+          <p> They organised an amicable legal separation, forgoing all succession rights, bestowing them instead upon their children. Even were divorce introduced, Ms Tighe would not remarry as she would not get involved again in the dividing up of property. 
+            </p>
+          <p> Mary Reddy is buying off her council house. At first, the authorities concerned would not allow her to do so. But she convinced them she was better off without her husband, as she could control her <amp> pound sign </amp> 109 single parent 's allowance for her and her three children. 
+            </p>
+          <p> Ms Reddy had had to put up with other women, alcohol, fractured ribs on Christmas day, a broken nose, scalded skin and near strangulation. <quote> "I seem to have had it every which way," </quote> she said. A doctor 's letter and a barring order protected her for a year. Then she began to panic, thinking her husband would discover he was legally entitled to return – she could only renew her barring order were he to assault her again. 
+            </p>
+          <p> Separated now for three years, she laughed at the concept of the white paper and all its theories: <quote> "It is not worth the paper it is written on unless you create a whole free legal aid system." </quote> The paper says this will be done when public finances allow. 
+            </p>
+          <p> Not being able to divorce bothered her. She felt it was important <quote> "on a personal basis to be legally yourself again". </quote> She had considered a judicial separation but felt it would cost too much in time or money.
+            </p>
+          <p> Even were foreign divorce an option, it would be futile, as <hi rend="italic"> de facto </hi> status was not recognised by social welfare. If a single mother begins a second relationship she loses all benefits and depends on her partner 's earnings – or, if he is on welfare, on his single allowance. 
+            </p>
+          <p> Such situations, Ms O'Brien said, rendered null and void the argument by the former Fine Gael TD Alice Glenn that divorce would represent a cost to the state. <quote> "If people could marry again, they would no longer be claiming deserted wife 's allowance. They could regularise their situation," </quote> she said.
+            </p>
+          <p> Meanwhile, Mary Reddy fills in the forms that give her the option of being single, married or widowed, even though most of the people she knows are separated – no longer able to tolerate the lives their grandmothers, mothers and aunts had.
+            </p>
+          <p>
+            <quote> "My whole mess has evolved from a stupid decision to get married and have three children … I 'd love to see that cardinal fella to tell him there are hundreds of people must like me who are not going to become nuns or zombies just because their husbands have left." </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/110.00000</textSigle>
+            <title> The Big Issues</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Cormac O'Keeffe, Dearbhla Regan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-018$A">
+          <div id="W2B-018$B">
+            <head> The Flat Trap </head>
+            <head>
+              <hi rend="italic"> Tens of thousands of people in Ireland are living in dangerous and unsanitary conditions, unaware of their rights or too afraid to exercise them </hi>
+            </head>
+            <head> Cormac O'Keeffe and Dearbhla Regan report. </head>
+            <p> In January 1994 two young men died in a fire at 110 North Circular Road, Dublin. The property had been converted into a multiple-occupancy residence prior to the implementation of the Landlord Act (1963). Dublin Corporation had no reason to inspect it, let alone know of its existence. The landlord had crammed sixteen bedsits into this three-storey house. The windows were barred and there was no fire escape. 
+                </p>
+            <p> Following the tragedy Joe Costello TD (Labour) conducted a survey of the 166 houses on the North Circular, and found a <quote> "very serious deficiency in safety standards." </quote> 77 <amp> per cent sign </amp> had no alternative means of exit, in breach of the Fire Services Act (1981), which obliges landlords to take reasonable precautions against fire and ensure safety in the event of fire. 
+                </p>
+            <p> Mr Costello was particularly critical of the performance of the local authorities and dismissed enforcement of legislation governing the private sector as <quote> "wholly inadequate." </quote> Noel Carroll, Dublin Corporation PR Officer denies such claims. <quote> "Fire Prevention Officers are performing hundreds of inspections annually." </quote> However, a maximum of thirty notices are being served every year. Moreover, the Corporation presently provides only 24 part-time Fire Prevention Officers and 27 part-time Health Officers to regulate the thousands of properties actually registered as privately rented accommodation in Dublin. 
+                </p>
+            <p> Costello 's survey concluded that minimal policing of the private rented sector has led not only to a general situation of unacceptably substandard housing conditions, but to a uniform lack of awareness among the tenant population of their entitlement to basic health and safety standards. Acting Chief Environmental Health Officer Tom Carroll, however, denies the allegations. <quote> "Housing regulations are in the main being complied with." </quote> He also rejects persistent Student Unions ' accusations that local authorities are not fulfilling their statutory obligations and that landlords, when found to be in breach of regulations, are not being fined. 
+                </p>
+            <p> There is an even more fundamental inadequacy with existing legislation. The Corporation is only obliged to inspect registered properties and those converted after 1963. Mr Costello, however, stated, <quote> "I believe only a fraction of Dublin 's landlords are actually registered as such." </quote> The law cannot be brought to bear upon the huge percentage of non tax-paying landlords who are renting out potential death-traps to students, single parents and the unemployed. 
+                </p>
+            <p>
+              <quote> "Totally unorganised and totally uncontrolled," </quote> is Costello 's polite description of the free-for-all that is Dublin 's private sector. <quote> "The DoE must bring in statutory legislation obliging landlords to register with their local authorities," </quote> he stated. <quote> "As it is, what happened at North Circular Road can and will happen again." </quote> Without uniformly enforced registration, the introduction of The Housing Regulations Act (1993), which requires landlords to provide a rent book and maintain certain minimum standards of repair, is useless. 
+                </p>
+            <p> Health and fire regulations are widely disregarded in Dublin. Fire escapes are not part of the city 's infrastructure. Burnt-out houses are. Hundreds of tenants are being cramped into dilapidated Georgian houses partitioned by plywood, despite a government warning that, <quote> "Three story buildings with large numbers of tenants are death-traps when they possess only the same number of fire exits they possessed prior to conversion to multi-unit occupancy." </quote> In Drumcondra recently a young man jumped three stories from one of these houses to escape a fire. He broke both his legs. 
+                </p>
+            <p> Such conditions are regarded as standard, rather than exceptional, among tenants renting privately in Dublin. We spoke to some of them at random about their experiences. 
+                </p>
+            <p> David lives at the top of one of the multi-occupied Georgian houses in Leeson Street converted after 1963. To escape a fire he would have to jump four flights onto concrete, or a fire-engine could bull-doze through a garden wall to reach him. His landlord, who is registered, collects over <amp> pound sign </amp> 400 pw on one property alone. David called Fire Prevention to be informed that the landlord was only obliged to provide a smoke alarm or a fire extinguisher. A month later, David was given a fire extinguisher that wouldn't put out a cigarette. 
+                </p>
+            <p> Most tenants we interviewed agreed that health regulations are also of minor concern to the majority of Dublin 's landlords. A certain wealthy and reputable landlady owns several houses in Lower Baggot Street. Deirdra, a potential tenant, went to view some of her flats recently. 
+                </p>
+            <p> Legally, there must be at least two doors separating a bathroom from a kitchen. In at least two of these flats the toilet is actually in the kitchen, which is itself attached to the living room. 'Toilet' is a generous word. These port-a-loos don't even reach the ceiling, and the shower is in there as well. The landlady is charging <amp> pound sign </amp> 43 pw per person. From mid-September she will have hundreds of students queuing outside her doors. 
+                </p>
+            <p> Students in Dublin are particularly vulnerable to exploitation. The vast majority of them are living in dangerously substandard accommodation. They provide a constant demand for housing, but as a transient body are also virtually powerless to demand tenant rights. With Dublin 's chronic scarcity of habitable accommodation, students are an ideal market for unscrupulous landlords seeking to make a quick turn-over profit, because they can always be relied upon to grab substandard flats at ludicrously inflated prices. 
+                </p>
+            <p>
+              <quote> "Competing for accommodation in a situation of excess demand, students cannot afford to be assertive. Very few even know they have rights," </quote> according to UCD 's Welfare Officer, Stephanie Leahy. Ms Mary Higgins, manager of Threshold in Dublin, said, <quote> "The problem is fear. With no security of tenure, young people are afraid that if they complain they will be evicted. They probably would be." </quote> She reported a further significant increase in the number of illegal evictions passed last year. Tom Carroll, also admitted that tenants were unwilling to co-operate with inspections for fear of provoking the landlord. 
+                </p>
+            <p> This state of affairs applies across the board and in Northern Ireland as well. In towns facing explosive increases in the student population, such as Athlone, even minimal attempts to provide campus housing and remove students from exploitation have met with vehement opposition from private landlords. <quote> "Students here are still looking for somewhere half-decent to live at the end of March," </quote> according to USI News Editor at Sligo University, Catherine Kearney. Meanwhile, twenty-three students were forced to share a house separated from each other by plywood walls. 
+                </p>
+            <p>
+              <quote> "The unregulated private sector is an unacceptable and glaring area of abuse," </quote> Costello concluded. While he welcomes recent reforms, he is <quote> "extremely suspicious" </quote> that the governmental will to introduce obligatory registration actually exists, despite the support voiced in favour of it by Mr. Emmett Stagg, Minister for Housing. 
+                </p>
+            <p> At the August launch of their Challenges and Change report, Threshold were also extremely critical of the <quote> "unevenness" </quote> in the implementation of The Housing Regulations Act <sic> ) </sic> . Like Mr Costello, Ms Higgins was particularly critical of the local authorities, which she described as <quote> "moribund and underfunded." </quote> She does not believe that new regulations will do anything to mitigate the situation as long as the lack of policing that has characterised the system to date continues. 
+                </p>
+            <p>
+              <quote> "In housing matters generally, there should be someone looking to the public good," </quote> Higgins stated. As it is, the wolf is at the door in the guise of a laissez-faire policy regarding the behaviour of opportunistic and corrupt landlords. 
+                </p>
+            <p> Deaths such as those on the North Circular Road are not accidental. They are preventable by the statutory installation of cheap and simple fire provisions. The government, even more so than the landlord, must be called to account for turning a blind eye to the exploitation of low-income groups. To date, the government has been succumbing to the implicit threat that if regulations were rigidly enforced, landlords would sell out and send this state-dependent body of tenants out of their hovels and onto the streets. 
+                </p>
+          </div>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/110.00001</textSigle>
+            <title> The Big Issues</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Cormac O'Keeffe, Dearbhla Regan</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-018$C">
+          <head> matthew 's column </head>
+          <head>
+            <quote>
+              <hi rend="italic"> "The Age of Consent is being used to show society 's disapproval of our love" </hi>
+            </quote>
+          </head>
+          <p> The Age of Consent is there to protect our youth. Fair enough, in theory, but with reported cases of abuse rising, and the true levels unknown, certainly higher and probably terrifyingly so, it 's obviously not a strong enough defence for our minors. There 's no point in having consent laws without comprehensive education in schools to inform those whom the laws are meant to protect how those laws work, and what rights they give. Many of those who are abused as children would not have undergone as much pain, terror and misery, had they been taught at school what sex is and what abuse is, and how that law is there to protect them, no matter what the abuser is saying or doing to threaten and terrify them into silence. 
+            </p>
+          <p> Of course the guardians of youth and morality in our society are completely opposed to compulsory and comprehensive sex education in our schools. The idea of celibate nuns or monks teaching about love, safe sex and emotion in convents and religious schools is rather ridiculous. 
+            </p>
+          <p> In Britain the Age of Consent is unpopular amongst homosexuals because it enshrines anti-gay discrimination in law. The majority of Conservative and Labour MPs seem to believe that men between the ages of sixteen and eighteen are more susceptible to the approaches of men than women of the same age, despite the advice of the British Medical Association and many other experts. Beyond that, it shows Parliament 's willingness to reject the pretence of the concept of equality in British law and allow the continuation of discrimination. It 's natural that gay men and women should be annoyed at this – the Age of Consent over there is being used to show society 's disapproval of our love, not to protect 'vulnerable' young men of seventeen. 
+            </p>
+          <p> How do the honourable elected members decide on suitable ages of majority anyway? The homosexual Age of Consent debate ignored expert advice on the best way to protect men between sixteen and eighteen, and to facilitate the distribution of safe-sex information to vulnerable gay men of that age. Instead they did what pleased their intolerant constituents and the tabloid press. In Ireland there is no common age of majority – marriage with one 's parents ' consent and cigarettes are available at sixteen, driving licenses and extra-marital sex at seventeen, and alcohol at eighteen. The law here seems confused at just when one becomes an adult – not because one is more ready for cigarettes at 16 than extra-marital sex, but because these laws are the results of political horse-trading and attempts to please special interest groups like drink and tobacco manufacturers, the medical profession, the church and homosexual and lesbian lobbying groups, and all the rest. 
+            </p>
+          <p> In a recent British survey, a link between sex education and higher ages of first experience and lower teenage pregnancies was shown, and this has been reaffirmed by countless other surveys. Holland has the lowest Age of Consent in western Europe, yet with comprehensive sex-education, the average age of first sexual experience is higher than in the UK, and teenage pregnancies are lower. Common sense says that giving our youths responsibility and education is the best way to protect them, and cotton-wool and ignorance are dangerous. We need comprehensive and compulsory sex education to protect our youth, and a common age of majority, now. 
+            </p>
+            Matthew Wherry
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/111.00000</textSigle>
+            <title> Campus Life</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Shane Donaghy</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-014$A">
+          <head>
+            <hi rend="bold"> who to turn to when life gets tough in the student world </hi>
+          </head>
+          <p>
+            <hi rend="bold"> student life has its fair share of problems. shane donaghey reports on what to do when a crisis arrives 
+            </hi>
+          </p>
+          <p> It 's an extremely lucky student who gets through their entire time in third-level education without one sort of crisis or another. 
+            </p>
+          <p> What can start out as a trivial matter can quickly explode into something much more serious if not dealt with quickly. 
+            </p>
+          <p> Problems can range from harassment to tenancy agreements, to drug dependency, unplanned pregnancy, stress and overwork. They can cover educational matters too. 
+            </p>
+          <p> What is important is that there is any number of people who can help with every problem a student is likely to face. Advice is nearly always free, and, importantly, non-judgmental. 
+            </p>
+          <p> The first port of call for most students with a problem is their Students ' Union. 
+            </p>
+          <p> The unions have several, frequently full-time officers who can offer advice on welfare, housing, accommodation etc. They also have an extensive network of advisers on which to draw upon. 
+            </p>
+          <p> The education officer, for example, can advise on changing courses, difficulties and delays in obtaining a grant, postgraduate courses, funding and even changing colleges. 
+            </p>
+          <p> If an academic situation has become so bad that you are up before the beak (your faculty progress or disciplinary committee), the education officer can help you make a case out of something other than bursting into tears and hoping for the best. They can also be present at the committee hearing. 
+            </p>
+          <p> With grants and accommodation becoming worse, officials dealing with student welfare are finding their workload increasing. 
+            </p>
+          <p> Queen 's Students ' Union has improved its service this year with the introduction of the Welnet computer database. The system contains information on accommodation, employment and finance. 
+            </p>
+          <p> The idiot-proof system can print a CV, a useful little item in the big world. 
+            </p>
+          <p> The Student Counselling Service can also provide a helpline. The service provides a confidential, friendly and professional service with fully-trained counsellors. As well as practical help, student counsellors are also trained to deal with more complicated personal and emotional problems from depressions to bereavement. 
+            </p>
+          <p> Methods are based normally on non-directive counselling. It is strictly confidential unless the student is agreed that information may be given to another person if he or she believes it would help overcome the problem. 
+            </p>
+          <p> In the excitement of leaving home and moving into a new environment, the issue of health is sometimes forgotten. It is easily done, but health should not be neglected. 
+            </p>
+          <p> Both universities require medicals from their freshers. It is a good idea to register with their health services as well, or with a GP. Colleges offer the same full range of health care cover as the local health centre. 
+            </p>
+          <p> An increasing concern is the health of students when they are away over the summer, either on holiday, field trips or gaining experience. 
+            </p>
+          <p> College medical staff are also on call when needed. 
+            </p>
+          <p> For those who would rather speak with fellow students in complete confidence, there is the Nightline service. It provides someone to talk to over the phone at night from 8pm to 8am. From 8pm to 10pm you can also call in at 41 University Street. (This address is likely to change over the next few months.) 
+            </p>
+          <p> Both universities have an extensive network of chaplains covering most major religions. Up-to-date details can be found in the universities ' handbooks. 
+            </p>
+          <p> While drink is taken to be as much a part of university life as exams, alcohol can cause serious problems for students. The Northern Ireland Council on Alcohol offers and education service to guide students at either 40 Elmwood Avenue, Belfast (0232) 664434, 461 Falls Road, 330499, or 219 Albertbridge Road, 731602. 
+            </p>
+          <p> The Samaritans have an outstanding record in dealing with problems of health, relationship or bereavement worries 24 hours a day, 365 days a year. 
+            </p>
+          <p> The organisation provides a listening ear in complete confidentiality. The caller 's name is not needed. They will listen to anyone with any kind of trouble that may be bothering them. They also welcome callers for talk on a one-to-one basis. 
+            </p>
+          <p> There are branches throughout the north. The Derry number is 265511, Coleraine 320000 and Belfast 664422. 
+            </p>
+          <p> It 's important to remember that no matter how big or small the problem, there is someone who can offer advice or an ear. It may be a cliche, but a problem shared is a problem halved. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/111.00001</textSigle>
+            <title> Campus Life</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Shane Donaghy</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-014$B">
+          <head>
+            <hi rend="bold"> educate to liberate: women find freedom </hi>
+          </head>
+          <p> women get some degree of equality at university, says maeve quigley, but they need to play an active role in their students ' union to ensure they get an equal say 
+            </p>
+          <p> UNIVERSITIES are probably the only places in existence where women have achieved some significant degree of equality. 
+            </p>
+          <p> For years at school, in the home, in the workplace and elsewhere, women encountered some kind of marginalisation, so while they 're at university it 's important they make the best of their time. 
+            </p>
+          <p> Most women find that university provides a lot more freedom than school, sometimes too much. You can be left behind by the university whirl unless you make a concerted effort to become involved, not just in your studies and social life, but in the countless clubs and societies that your university and students ' union offer. 
+            </p>
+          <p> It is essential that women involve themselves with the politics of their union, as, just like any other political arena, student politics is essentially a male-dominated pastime due more to social conditioning in second-level education rather than to the political structure of the students ' union itself. 
+            </p>
+          <p> The problem with this is that if more women do not start attending Union General Meetings (UGMs) and standing for council and sabbatical elections, policies on abortion and women 's rights decided by a majority of men who, even though they may be the most PC males on the planet, still can't fully understand what being a woman entails. 
+            </p>
+          <p> Inside your students ' union you may well find a women 's group, but before you dismiss it as being full of short-haired, bra-burning, men-hating feminists, why not go and see for yourself. You 'll be pleasantly surprised to find a group of people around your own age who just get together to discuss issues relevant to female students, and not a dungaree in sight! 
+            </p>
+          <p> Probably the most important issue for a woman at university is safety. Over the past few years sexual attacks have been becoming more and more prolific in and around the universities, around the halls of residences and on the campuses themselves. As recently as mid-September, the welfare office at Queen 's University issued a warning to prevent female students desperate for accommodation leaving their addresses and telephone numbers on notice boards for their own personal safety. 
+            </p>
+          <p> But at Queen 's Students' Union, safety for women is high on the agenda, as Welfare Officer Alison Ahern explains: <quote> "There is a feeling that the streets are more dangerous for women than before.</quote>
+          </p>
+          <p> "Here we are constantly putting up posters for the Rape Crisis Centre and Nexus to remind victims of sexual attacks that they can find support. 
+            </p>
+          <p>
+            <quote> "The Women 's officer and myself can be approached at any time for help on matters to do with pregnancy, sexual harassment or any other problems that are causing difficulties for the student." </quote>
+          </p>
+          <p> For their own personal protection, female students are advised to get a personal safety alarm at the beginning of the year. These are readily available from the Queen 's Students' Union shop at discount prices. 
+            </p>
+          <p> They have been recommended by the police as from the union, and have the added feature of a panic button. Queen 's also runs a women 's night-time minibus service seven nights a week. 
+            </p>
+          <p> For your own protection you must always remember these safety rules: 1 Try not to walk anywhere by yourself in the dark. If walking in the dark alone: <amp> bullet point </amp> make sure you have a personal safety alarm <amp> bullet point </amp> carry your keys in your hand to defend yourself <amp> bullet point </amp> stick to well lit areas, and areas where it is likely to be busy <amp> bullet point </amp> always make sure that someone else knows where you are 
+            </p>
+          <p> These are necessary safety precautions, but there 's no point in being too terrified to go outside either. For male and female students alike, socialising will play a very big part in your university career so the best advice that you can get is enjoy it while it lasts! 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/111.00002</textSigle>
+            <title> Campus Life</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Shane Donaghy</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-014$C">
+          <head> bold&gt; it 's tidy, it 's cheap – it doesn't exist  </head>
+          <p>
+            <hi rend="bold"> Good houses are rare – and prices are rocketing. John Lappin looks at student accommodation </hi>
+          </p>
+          <p> YES, there is a housing crisis this year and no, we can't give you any numbers to prove it. There is always a rush for flats and houses in September, <sic> increasingly </sic>
+            <corr> increasing </corr> the underlying stresses in the student market. 
+            </p>
+          <p> If you are a first-year you should be alright, having priority with the universities. If you are not, there is a greater chance you will be sleeping on a friend 's sofa or commuting from home in the back of beyond. 
+            </p>
+          <p>
+            <sic> Statistic </sic>
+            <corr> Statistics </corr> are hard to find but the time it takes to get a flat gets longer each year. Estate agents have had to cope with students coming to their offices in tears because they can't find a flat. Welfare offices are under more strain while the Student Housing Association <sic> Cooperatiave </sic>
+            <corr> Cooperative </corr> (Shac), a non-profit-making housing organisation, has a waiting list stretching back to April in Belfast and to February in Coleraine. 
+            </p>
+          <p> The days when if you were stuck at the start of term it was because you had stayed on two weeks too long at your summer job in America are long over. 
+            </p>
+          <p> If you do find yourself without a roof over your head what can you do? The first thing is not to panic and make sure you keep in contact with your welfare officer and university accommodation office. But don't just depend on things being done for you. Keep looking at accommodation notice boards and in newspapers, ask your friends – many houses and rooms can be let through word of mouth. 
+            </p>
+          <p> As for that little flat in Stranmillis with central heating, economy 7, microwave, jacuzzi, satellite TV, cocktail bar and charming balcony <sic> compete </sic>
+            <corr> complete </corr> with climbing roses, and all for <amp> pound sign </amp> 80 a month, some Tory student at Queen 's probably got daddy to buy it for him. 
+            </p>
+          <p> Queen 's Welfare Officer Alison Ahern was seeing 15 students a day a week before term began. She found an average price of <amp> pound sign </amp> 110 a month for a single room but with more students than ever paying from <amp> pound sign </amp> 85 to <amp> pound sign </amp> 110 a month for sharing a room. 
+            </p>
+          <p> She said: <quote> "We 've just got the database up and running. We 're appealing to landlords to send us information about vacancies so we can advertise it as soon as possible. I let people use the phone so they can phone up quickly and let them know their rights as tenants but I can't build houses." </quote>
+          </p>
+          <p> Accommodation manager at Queen 's, Conor Brown, had no worries about housing first-years but conceded that there was no enough student housing in Belfast. 
+            </p>
+          <p>
+            <quote> "The university intake is not as high as it was last year. At this time of year we specialise in first-year students. My impression is that this year is not as bad <sic> a </sic>
+              <corr> as </corr> former years," </quote> he said. 
+            </p>
+          <p> At the University of Ulster, Jordanstown and Magee seem to have less of a problem but many UUJ students choose to live in Belfast, increasing pressures on the city 's housing stock. 
+            </p>
+          <p> There are difficulties in Coleraine, highlighted by Shac, who has encountered problems with rising student numbers and slower student turnover. The recession meant fewer jobs in their home towns or abroad so students worked near campus over the summer and held on to their houses. 
+            </p>
+          <p> Another problem is that some bed and breakfasts insist that students clear out belongings at weekends and holidays to make way for other guests. 
+            </p>
+          <p> Jan O'Neil, speaking for Shac in Coleraine, said new buildings were needed to squeeze the worst of the landlords out of the market but added that there were often objections to planning applications in the area. 
+            </p>
+          <p> The greatest squeeze seems to be in Belfast. Houses are in demand not just from students but from former students now working in Belfast. In other cases landlords have sold up because the Housing Executive is enforcing multiple occupation regulations. 
+            </p>
+          <p> Renovation has priced many houses and flats out of the student market. The background to this has been increasing student number in the last few years at both universities while new building programmes have not matched the increase, putting more pressures on the existing stock. Finally many English-based insurance companies have withdrawn cover from student houses and this has had some impact this side of the Irish Sea. 
+            </p>
+          <p> Ray Cashell, director of Shac in Belfast, says: <quote> "There are a lot of different angles on this but at this stage we 're talking about a shortfall of several hundred people who have not an answer to their housing problem. People will tend to find somewhere but somewhere is often sleeping on a settee or doubling in a room." </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/112.00000</textSigle>
+            <title> The Big Issues</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Trevor S. O'Rourke</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-017$A">
+          <head>
+            <hi rend="bold"> Chasing the Dragon </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Heroin has once again exploded onto the streets of the capital. TS O'Rourke talks to one addict about his love of drugs and the problems of kicking the habit. We also report on a community that is fighting back and hear the opinions of <sic> on </sic>
+              <corr> one </corr> youngster who has already seen the <sic> devasting </sic>
+              <corr> devastating </corr> effects of drugs at age 13. </hi>
+          </head>
+          <p> JOHNNY (an alias) is in his late twenties and has been a heroin user for over eleven years. His somewhat gaunt and menacing appearance is the result of some hard times. 
+            </p>
+          <p> I met Johnny in a central Dublin pub, where we talked for an hour over a quiet pint. Explaining that he was just on his way up to Sean McDermott Street in order to buy some heroin, he said he would be back in a few minutes. He left, anxious yet smiling. 
+            </p>
+          <p> Fifteen minutes later, Johnny returned having purchased two 'Q' (quarter-gram) bags of heroin from a young man on a bicycle, who was doing a roaring trade. Showing me the two little parcels of heroin, Johnny explained: <quote> "There 's loads of dealers in Sean McDermott Street, and if you know who to look for, you can get gear in a few minutes." </quote> He then proceeded to go into the gents ' toilets, from where he emerged a little later, having smoked one of the two deals. The pub 's clientele were completely oblivious. 
+            </p>
+          <p> This is nothing new to Johnny, who was first tempted to inject heroin by friends in Dolphin 's Barn. Less than a month later he was addicted, having used the drug on an almost-daily basis. 
+            </p>
+          <p> He continues to use heroin because of what it does for him. <quote> "You get an amazing feeling of well-being, and you don't have any worries. Most other drugs have an uplifting effect – this is more of a mellow feeling. Everything feels great and you don't care about anything." </quote>
+          </p>
+          <p> As you might have guessed, Johnny has paid for his addiction. Convicted four times, he has spent time in Dublin 's Mountjoy Prison. <quote> "I 've been convicted of robbery with violence and selling drugs to get money." </quote> A heroin habit is extremely expensive, and Johnny got his money for drugs <quote> "basically by breaking into houses, stealing videos, robbing garages, mugging people and armed robbery." </quote>
+          </p>
+          <p>
+            <quote> "I didn't care where the money came from." </quote>
+          </p>
+          <p> Speaking of his time spent in Mountjoy, he said: <quote> "Mountjoy is a dump – you wouldn't put a pig in the place. You 're only allowed out for six hours during the day – it 's not a nice place to be." </quote> However, drugs are readily available, and Johnny admits that they help you to do your time. Apparently you can get anything you want in Mountjoy. <quote> "There are various ways of smuggling drugs into Mountjoy – the security there is very lax – and a lot of the screws turn a blind eye to it." </quote>
+          </p>
+          <p> Despite widespread knowledge that the HIV virus can be transmitted through sharing syringes, addicts in Mountjoy continue to share their 'works' with one another, with up to 30 people using one syringe. <quote> "Mainly it 's injected by prisoners in the toilets or in the recreation area – you 'd see up to ten people in a cubicle using the one syringe. If you 're in the grips of a drug, you don't care what way it comes." </quote>
+          </p>
+          <p> As prisoners are only subjected to a strip search – and not a cavity search – smuggling drugs in is not a problem. For many prisoners, repeated court appearances can be lucrative, as friends or relatives pass heroin packages to them, which they can either use or sell once they return to the prison. 
+            </p>
+          <p> The best way to hide heroin is in your mouth, according to Johnny. <quote> "The Gardaí can't force you to open your mouth – they can only search your clothes – so it 's easy. I 've been stopped a few times and searched by the police with heroin in my mouth." </quote>
+          </p>
+          <p> The importation of heroin, although illegal, continues daily. Using couriers, the drug bosses import at least 20 to 30 ounces a week. Couriers are usually paid in drugs. <quote> "There 's great profit to be made – they bring in 60 per cent pure heroin, but by the time it gets onto the streets it 's only about 20 per cent pure." </quote> Heroin is regularly cut with such innocuous substances as quinine or milk sugar, decreasing the purity and increasing the profit margin. 
+            </p>
+          <p> Recently, users have taken to smoking the drug (<quote> "chasing the dragon" </quote> ) in an attempt to avoid contracting the HIV virus through intravenous use. 
+            </p>
+          <p> According to many sources, the purity of the drug has almost doubled recently, and the price has also dropped. This, Johnny believes, is to lure back users by giving them a better hit while smoking it. Unfortunately, this has also led to an increased chance of accidental overdose for those unused to such pure heroin. 
+            </p>
+          <p> As we were taking the accompanying photographs, a Garda sergeant walked right past, apparently oblivious to the presence of the drugs. Johnny said: <quote> "Most people would be very surprised at how easily available heroin is in Dublin." </quote> Commenting on the success rate of the Gardaí, Johnny said: <quote> "They are fighting a losing battle. They only seize about 2 per cent of the total amount imported, and there 's too much money involved for the drugs bosses to give it up." </quote>
+          </p>
+          <p> Johnny is only one of over 5000 reported heroin addicts in Ireland. The Aruppe Society – who do work with homeless young people – estimates these addicts are responsible for over two-thirds of Ireland 's crime. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/112.00001</textSigle>
+            <title> The Big Issues</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Trevor S. O'Rourke</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-017$A">
+          <head> Reclaiming the Community </head>
+          <p> Meath Street, in the heart of Dublin 's south inner city, has long been depicted as a sort of urban 'badlands' where junkies and dealers congregate in large numbers and theft and violence are commonplace. 
+            </p>
+          <p> Feargal Connolly, of the Meath Street-based Community Response project, is angered by the media 's negative stereotyping of the area. <quote> "Headlines like 'South Inner City Like the Bronx' are written by people who don't come from the area and who don't care. This sort of sensationalism doesn't do anything to help us improve our image, or deal with the drug problem." </quote>
+          </p>
+          <p> The response group – one of many nationwide – was set up in 1990, towards the end of the 1980s drug epidemic. Once the epidemic had decreased in size and severity, there was no one organising against the big drug pushers. This void was filled by the Community Response, amongst others. 
+            </p>
+          <p> The main function of the group, as Connolly describes it, is <quote> "to develop a response within the community around drugs, HIV, AIDS and drug-related crime." </quote> This is achieved through work in prevention – with schools, youth groups and training workshops – and by educating children about the options which are open to them. 
+            </p>
+          <p> In the wake of recent events around the city involving vigilante tenants evicting known drug pushers, the general consensus appears to be one of sympathy amongst the residents. Many people have seen whole families decimated by the scourge of drug abuse and, inevitably, AIDS. 
+            </p>
+          <p> In the recent past, some residents have been holding meetings where accused pushers are given the chance to defend themselves before being told to leave the area. It 's a case of leave, or be forced to leave. Violence, however, is uncommon. With the dealers rather than the users targeted, Feargal states: <quote> "We are always very wary that people who have a problem are not targeted in that process." </quote>
+          </p>
+          <p> Whatever way affected communities decide to deal with the big boys of the drug world, they can be sure of support from agencies and community groups, if not the politicians, who, in Feargal Connolly 's opinion, need to be <quote> "more accountable to the people" </quote> in the war against the big dealers. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/112.00002</textSigle>
+            <title> The Big Issues</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Trevor S. O'Rourke</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-017$B">
+          <head> Fr Pat Buckley </head>
+          <head>
+            <hi rend="bold"> What are we to do with Child Abusers? </hi>
+          </head>
+          <p> MORE AND MORE cases of child sex abuse are emerging in Ireland. The Catholic Church is dizzy as it tries to come to terms with the various complaints against its priests. 
+            </p>
+          <p> Some victims have now issued writs in Belfast. Cardinal Daly and Father Brendan <sic> Symth 's </sic>
+            <corr> Smyth 's </corr> abbot, Kevin Smith, have been cited as defendants. The Catholic Church in America has spent millions on legal settlements. The Irish Church is probably facing similar bills. But of course child sexual and physical abuse is by no means confined to priests and Christian Brothers: most of it takes place in families. 
+            </p>
+          <p> Our primary sympathy must lie with the victims. Many of them have grown up physically, but they will always carry the scars of the abuse. Some of them will be condemned to living lives of great unhappiness as they mismanage relationships and find it impossible to trust. The victims deserve the very best counselling and more than adequate compensation. 
+            </p>
+          <p> But what are we to do with 'perpetrators'? Some suggest that they should be castrated, others in anger would want to beat them up. A few would even suggest the death penalty. 
+            </p>
+          <p> Child abuse is a very serious crime. Those who engage in it must expect to pay a very heavy price: society demands punishment and retribution. A severe prison sentence seems just, but we should never allow ourselves to forget that in civilised societies punishment should be linked to rehabilitation. 
+            </p>
+          <p> In the United States they place great emphasis on sex offenders engaging in rehabilitation programmes. These are sometimes offered as an option to prison and the successful completion of a programme can lead to an early release. Sometimes the programme will involve re-introducing the abuser into the life of the abused. This can be the case particularly if the abused was a cherished family member. 
+            </p>
+          <p> Very often it will emerge in therapy that the abusers themselves were victims of child abuse. It seems that some victims grow up to be perpetrators. This is especially sad, but it does show that child abuse happens sometimes as a result of human weakness and not badness. Of course this is no excuse, but it is an explanation. 
+            </p>
+          <p> We need our medical experts and our psychologists to do an awful lot more work on the causes of abuse. And if it were to emerge that there was some genetic or compulsive psychological element, we would have an even greater responsibility to approach child abuse from the perspective of illness and treatment. 
+            </p>
+          <p> Prison on its own is not the answer. Far too many abusers re-offend after being in prison. The Americans have proven that fewer re-offend after intensive therapy. 
+            </p>
+          <p> There is a huge lack of programmes for abusers in Ireland. That 's a very great pity. One of the best ways to protect children in the future is to work with offenders so that they will not re-offend. Victims have their support groups and their rape crisis centres – I 'm glad that they have – but I wish groups for the abusers were common. 
+            </p>
+          <p> Perhaps we sometimes forget that the abusers are human beings too. Many of them must have terrible problems to make them do the things they do. Abusers are somebody 's flesh and blood; they are somebody 's son or daughter. They were once innocent babies and children. Something happened to them somewhere along the line to put them on such a disastrous road. Those of us who profess Christianity have to remember also that God loves us all equally – no matter how low we sink. 
+            </p>
+          <p> Child abuse is not a new phenomenon. It was always there, but it was hidden. It 's now coming out into the open. That means that we all have to face up to it. Our first responsibility is to the victims, but we also have a serious responsibility to care for the abusers. If the abusers cooperate, we should give them all the help they need. If they are not willing to take help, then perhaps there is a case for locking them away for a very long time, if only to protect the vulnerable. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/113.00000</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Chris McGimpsey</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1995</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-015$A">
+          <head>
+            <hi rend="bold"> Beyond partitions </hi>
+          </head>
+          <p>
+            <hi rend="bold"> It will probably only be when the people of the Shankill truly believe that the violence has ended for good that we will start to see a proper assessment of the last 25 years. </hi> Continuing paramilitary activity in both communities, the controversy over traditional parades and the ongoing impasse over decommissioning means that people in areas such as Protestant west Belfast remain cautious. 
+            </p>
+          <p> Nevertheless, since August 31 and October 13 as the weeks became months, optimism has increased in an inverse ratio to the level of tension. Many people are starting to believe that perhaps it is all over. 
+            </p>
+          <p> Some of the changes in the community have been glaring. The army has vanished from the streets. The RUC now patrols the area in short sleeved shirts, without flak jackets. After a lengthy campaign Lanark Way has reopened. 
+            </p>
+          <p> Initially it was the small things you noticed. No longer did you have to enter a cage, viewed by a small camera, before being admitted into the bar for a pint. Strange cars do not attract the same level of curiosity. Young people returning from the clubs in the city centre are more likely to walk home than before. A few shoppers from the Springfield and Falls Roads are returning to the Shankill to shop on a Saturday. 
+            </p>
+          <p> However this may seem to be a small return for the cessation of a terrorist campaign which cost over 3,000 lives. There remains a serious community relations problem on both sides of the peaceline. A problem which may well exhaust the Community Relations Council before it is solved. There continues to be stoning incidents across the barriers which have been erected to keep the two sections of the community apart. 
+            </p>
+          <p> It is worth bearing in mind that for the last 25 years we have been inflicting the most horrific crimes on one another. These wounds will not heal overnight. That notwithstanding, there is an increasing determination not to step back into the abyss. That, at least, is a start. We will have to build from the bottom up. 
+            </p>
+          <p> In some ways the declaration of a cessation of violence has acted as a catalyst for a process which commenced almost one year earlier. The Shankill bomb saw the birth of a determination for a new start. At that time many of us thought that this would translate into a resolve not to be ground down by a traditional enemy. However, with the advent of a new era in October 1994 this resolution became one of no longer being prepared to accept the role of an alienated community. For a quarter of a century the Shankill had been marginalised in all but the news programmes. 
+            </p>
+          <p> People started emerging, blinking into the light. It is now certain that Shankill residents will increasingly question the old certainties. The courage and dignity with which they faced the eye of the sectarian storm can now be turned towards delivering a better life for all within the community. This confidence should eventually lead directly to a normalising of relationships with our neighbours on the other side of the wall. It is in the attitudes of the people of the people on the Road that the peace has had the most tangible effect. There is a desire to make up for the loss of the last 25 years. This new vision, while born out of the tragedy of the Shankill bomb, would have been less likely to bear fruit if it had been forced to coexist with paramilitary violence. 
+            </p>
+          <p> It is not in the small changes that we can see the effects of twelve months of peace. Rather it is in the certainty that the great potential of the Shankill and its people may at last be fulfilled. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/113.00001</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Chris McGimpsey</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1995</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-015$B">
+          <p>
+            <hi rend="bold"> Driving down the Upper Springfield Road, Belfast 's latest peacewall dominates the landscape, hovering over the people of Springmartin and Springfield Parade. </hi> It is a monument to past and <sic> resent </sic>
+            <corr> present </corr> fears, a continuing reality a year after the ceasefire. Perhaps, when all the other Belfast walls come down this last Great Wall of Belfast should remain. 
+            </p>
+          <p> The wall reflects another reality of west Belfast – that the suffering inflicted and endured over decades cannot be demolished quickly. To have expected otherwise misunderstands the pain which burden so many, a pain that is acknowledged (if at all) only spasmodically by those who caused it. Last month 's 'VJ' commemorations confirm how long the healing process can be – our pain will take much time and thought to ease. 
+            </p>
+          <p> The ceasefire, despite its year of traumas and turbulence, is firmly anchored among the people of west Belfast. They value it and support those who manage and maintain it – when it appears that it may unravel, a communal restraint appears, pulling it out of crisis. Falls Road republicans, having evolved policy and practice over the years, appear committed to 'a long peace'. Those who disagreed with the timing of the ceasefire of the leadership 's method of its achievement enjoy little or no sympathy for the argument (as they see it) that a return to war will bring more advantage. Shankill Road loyalists – whose political evolution requires more analysis – appear as the advance guard for new thinking within the wider unionist community. The US Administration affirms its commitment to the process by the expected visit of President Clinton in early December. The two governments prepare to re-focus their political strategy with the September Summit of which much is expected and much required. In short a potent cocktail of factors sustains the peace far greater than the totality of forces that may threaten it. 
+            </p>
+          <p> Yet a sense of crisis exists. A political process so carefully crafted over the last decade urgently requires the impetus of governments. London 's strategy appears at best confused and at worst bloody minded. Issues that can be resolved – repatriation, release of prisoners, repeal of oppressive laws – are delayed or denied. For nationalists and others in west Belfast, these issues are essential tests of British good faith or bad faith. Broader issues (such as weapons and negotiations) compound doubts about British strategy, doubts that must be laid to rest at the September Summit by confirming the timing of inclusive negotiations and, perhaps, a structure for parallel discussions on all relevant issues. 
+            </p>
+          <p> As we exit the season of marches and protests, for many in west Belfast recent police actions confirm the centrality of the policing debate, which so far, has been somewhat sterile. The Police Authority, marginal in influence and minimalist in intention, clashes with the RUC establishment, who cling to policies and a culture inappropriate to new policing needs. The Acting-Deputy Chief Constable, Ronnie Flanagan, perhaps more aware of the need for change, conducts a review in a political vacuum. Sinn Féin's demand – 'Disband the RUC' – is a slogan and not a policy and offers few creative insights. The debate nonetheless has been energised by Seamus Mallon 's occasional forays and it is anticipated that the SDLP policy document, possibly published later this year, will enliven and enrich the debate further. However, without constitutional and institutional agreement and fundamental cultural change within the police and an agreed means of resolving conflict issues, the policing issues will run and run. 
+            </p>
+          <p> The many warm phrases about tackling economic and social disadvantage in west Belfast must be translated into the hard facts of eroding disadvantage. On the Falls and the Shankill this task remains substantially unaddressed. The compelling political success of President Clinton 's US Investment Conference and the innovative strategy behind the European Peace and Reconciliation package, is the essential preamble to creating employment opportunities. This is understood and accepted 'on the ground' in west Belfast. 
+            </p>
+          <p> However, the continuing indifference of most government agencies to redressing years of neglect and discrimination and the absence of any systematic strategy by the IDB for inward investment is alarming. This issue will be one of the touchstones of government intentions towards west Belfast in the second year of the ceasefire. 
+            </p>
+          <p> It was Martin McGuinness who most narrowly misjudged nationalist political culture with his recent comment that in future negotiations, nationalists would have nothing to give because "they had nothing to give". In terms of jobs, justice and equality, there is validity in <sic> is </sic>
+            <corr> his </corr> assertion. But nationalists have much to give – we know that it is a long twilight struggle that brings change; that the political agenda has been enormously enriched by nationalist creative thought and that national confidence and international respect characterise our perspective. This is only part of what we have to give and what we have to give can be seen on the Garvaghy Road; by our building of inclusive politics; by our first articulating the equality and validity of unionist and nationalist traditions. This is a growing reality in west Belfast – that unreconstructed dogmas and demands of the past need to be redefined in a more relevant and accommodating way and that nationalists are well placed and informed to do so. 
+            </p>
+          <p> An Italian once wrote: <quote> "There is nothing more difficult to take in hand, more perilous to conduct or more uncertain in its success than to take the lead in the introduction of a new order of things" </quote> . And the late US Senator Robert Kennedy added <quote> "Yet this is the task of this generation and the road is strewn with many dangers." </quote> The past year of ceasefire confirms the truth of this. But everyday, everywhere, there are people who do not shirk the task of introducing new order of things. In West Belfast, as much as anywhere. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/113.00002</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Chris McGimpsey</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1995</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-015$C">
+          <head>
+            <hi rend="bold"> It takes two to consent </hi>
+          </head>
+          <p>
+            <hi rend="bold"> Things have moved quickly since the joint declaration: it has acted as the catalyst for the IRA ceasefire and prompted the 'framework document', to be presented soon by the two governments, which can chart the way to new, stable political structures on the island. </hi> When London and Dublin agreed last December <quote> "to remove the cause of the conflict, to overcome the legacy of history and to heal the divisions which have resulted" </quote> , they made a commitment to go to the heart of the problem. 
+            </p>
+          <p> The test of the practical merits of the declaration and of the governments ' commitment will, however, be in their application to, and implication in, the political process, as reflected in the framework document. This is particularly true for nationalists, whose defining experience of Northern Ireland has been of exclusion, domination by unionism and all the inequalities that stemmed from majoritarian rule. 
+            </p>
+          <p> The most certain political fact is this: nationalists in the north will never again accept a position where they are second-class citizens in their own land. Whatever their differences, there is a common resolve that never again will they accept the status of a subordinate and abused minority, formerly assigned to us by the combined weight of the British government and the unionist majority. 
+            </p>
+          <p> That is why the focus of the declaration is, quite properly, the island as a whole. Yet there are still legitimate nationalist concerns, which centre on the so-called 'unionist veto'. They are tied up with the issue of 'consent' – that is, acceptance that there will be no change in the status of Northern Ireland without the consent of a majority of its people. 
+            </p>
+          <p> In essence, the concern boils down to this: for as long as the Northern Ireland framework exists, given its unionist bias and inbuilt, tribal weighting in the unionists ' favour, how can nationalists expect equality and dignity? 
+            </p>
+          <p> While the declaration lays stress on equal rights and 'parity of esteem', we need to know what these concepts will mean in practice. Is mere lip-service to be paid to the ideals and aspirations of nationalists, where the practical impact, as well as inertia, of the British administration weight in one direction only – that of the maintenance of the union? 
+            </p>
+          <p> Similarly, is the aspiration to unity to be treated as irrelevant, unless and until the day the majority has actually voted it into reality? Or is it to be given real, operational expression and opportunity as a legitimate and worthy aspiration, as of now? If the people of Northern Ireland are not to be persuaded into Irish unity, they must also not be subject to hidden barriers and loaded preferences, bolstering up the unionist position and loading the dice between the two aspirations. 
+            </p>
+          <p> There may no longer be a 'unionist veto' in the extreme sense which allowed unionist domination to go unchecked and unexamined for more than 50 years. There are, however, more subtle variants still around. 
+            </p>
+          <p> There is the notion that the rights of nationalists must meet an unwritten test of unionist consent and approval. There is the notion that, notwithstanding the tribal make-up of Northern Ireland, the empowerment of nationalists would somehow be an infringement of the rights of unionists. There is the notion that the union is somehow the only 'real' dimension in Northern Ireland and that anything to do with nationalist aspirations is, in the last analysis an 'add-on'. 
+            </p>
+          <p> If the unionist veto means the strong political influence of a coherent community of 900,000 people, then that of course is accepted. To deny it would be as futile as any other flight from reality. 
+            </p>
+          <p> But he other notions should be dispelled and 'veto' and 'consent' precisely defined. We need to be assured that there is no veto over the policy of the two governments, and that neither is precluded from adopting or pursuing a policy in relation to the north of which unionists disapprove. Both governments enjoy a wider mandate and are entitled to consult the general good or set wider objectives, on this as on any other issue. They should put beyond doubt that their approach to Northern Ireland is based on a recognition that it is <hi rend="italic"> sui generis </hi> and that the needs of nationalists cannot be met or mediated through the inbuilt unionist majority. 
+            </p>
+          <p> People should also recognise that nationalist consent is directed at the specific question of a change in the status of Northern Ireland. It should not be taken to imply a nationalist consent to a chain of logic that, because Northern Ireland is at present under United Kingdom jurisdiction, their consent must apply to everything that flows from that. There is a world of political difference between agreeing there will be no change of status without consent, and saying we consent to the present status. If that distinction is eluded, there will be no real dialogue with nationalism. 
+            </p>
+          <p> Acceptance of consent is not a blank cheque for some unionist programme for Northern Ireland. We must all remember – especially the British government and the unionist parties – that the coin of consent has two sides, and the more clearly that is reflected in any new arrangements the more durable and stable they will be. Because Irish history, if it teaches us anything, teaches us that consent is the essential ingredient of stability. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/114.00000</textSigle>
+            <title>The Haughey File</title>
+            <domain>PopSocSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Stephen Collins</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-019$A">
+          <head>
+            <hi rend="italic"> 7 – A New Party </hi>
+          </head>
+          <p> On the night Des O'Malley was expelled from Fianna Fáil  a leading Fine Gael activist, Michael McDowell, was at home looking at television. Watching the event unfold on the news McDowell commented to his wife that if the former minister started a new political party he was sure to get a fair degree of support because the time was right for it. McDowell 's wife, Niamh, said that if her husband felt that way he should make his views known to O'Malley. So he sat down and wrote a letter encouraging O'Malley to form a new political party and offering whatever help he could give. 
+            </p>
+          <p> Michael McDowell was an up-and-coming young barrister who at this stage was growing increasingly disillusioned with Fine Gael 's role in government. He had served three years as chairman of the party 's organisation in Garret FitzGerald 's constituency of Dublin South East and had made no secret of his view that the coalition with Labour was a disaster. 
+            </p>
+          <p> To the deep irritation of FitzGerald, McDowell had used the occasion of his last speech as chairman, at the constituency annual general meeting a year before, to make his view that the party was going nowhere and he told his surprised fellow party members that he had decided never to vote for Fine Gael again if what they were offering to the electorate was a coalition with the Labour Party. In the Law Library he regularly discussed politics with Michael O'Leary, the former Labour leader who was now a Fine Gael TD. O'Leary had performed the remarkable feat of getting elected as a Fine Gael TD only weeks after quitting as Labour leader because of a humiliating rejection of his policies at Labour 's annual conference. It did not take long, however, for disillusionment with his new party to set in and O'Leary was highly critical of the way the Fine Gael-Labour government operated. In McDowell 's house shortly before Christmas 1984 the two men drew up a list of the seats Fine Gael would lose at the next election. They arrived at the grand total of twenty-one (when the election came over two years later it was nineteen) and concluded that there was no way of stopping a Fianna Fáil  landslide. 
+            </p>
+          <p> It was not long after that – in February 1985 – that McDowell wrote to Des O'Malley. He got no immediate response, but after Easter he was contacted by Fianna Fáil  TD Mary Harney, who had been a close ally of O'Malley in Fianna Fáil  and who also knew McDowell through student debates a decade earlier. She asked him if he was serious about joining a new party and he said he was. Subsequently McDowell invited O'Malley around to his house for dinner and the two men met for the first time. 
+            </p>
+          <p> In the meantime Fianna Fáil  friends of O'Malley were also considering the option of a new political party. Seamus Brennan, the former Fianna Fáil  General Secretary who had been an anti Haughey TD since 1981, Mary Harney and David Andrews were chief among them. An opinion poll was organised by Brennan and financed by Barra O Tuama, the Cork hotel owner and concert promoter, and published on 18 April. The poll showed that 39 percent of people asked were in favour of a new political party headed by O'Malley while 35 percent were against it. An interesting feature of the poll which was carried out by Irish Marketing Surveys was that the most positive reaction came from the middle class voters and large farmers. The strongest support was located in Munster, not surprisingly in view of O'Malley 's home base and the sympathy for Jack Lynch. 
+            </p>
+          <p> There were mixed opinions at the time on the significance of the poll. Haughey dismissed it as irrelevant, but for those planning the new party it appeared hopeful, particularly as it was published only a few days after another poll which showed a big drop in Fianna Fáil  support due to the O'Malley expulsion. 
+            </p>
+          <p> In the following months, though, the steam seemed to go out of the plan. At the beginning of the summer Seamus Brennan began to go lukewarm on the project and appeared more interested in pursuing his political career within Fianna Fáil . O'Malley 's supporters in Limerick were also reluctant to get involved, most of them preferring their TD to stay on as a sort of independent Fianna Fáil  deputy who might one day be reconciled with the party. 
+            </p>
+          <p> Mary Harney was still a strong advocate of a new party. She went to the United States for the summer and when she returned she found that while planning for the party was still continuing it was beginning to flag. Brennan had dropped out, but another Fianna Fáil  TD, Charlie McCreevy, who had been a Haughey supporter in 1979 but had quickly become a die-hard opponent of the Fianna Fáil  leader, had become involved. Another to join in McDowell 's scheme was Paul McKay, who had been treasurer of the Fianna Fáil  organisation in Haughey 's constituency but had resigned in protest at the way the accounts were kept. He undertook a feasibility study on the launching of a new organisation. O'Malley, however, still remained very reluctant to commit himself to a new party. 
+            </p>
+          <p> A crucial meeting of the conspirators took place in Michael O'Leary 's house in Wellington Road in September. At the meeting, besides O'Leary, were O'Malley, Harney, McDowell, McKay and McCreevy. At this stage O'Malley had gone very cold on the idea and told the others that they should do nothing for the present at least. Showing his impatience at the delay and indecision, McCreevy told the others that if the new party did not go ahead that night he was out and would have nothing more to do with it. O'Malley was a bit wary of McCreevy because of the way he had put down the motion of no confidence in Haughey in October 1982 without consulting anybody, and he was unwilling to respond to such an ultimatum from him. 
+            </p>
+          <p> A crucial factor in the indecision was the way in which the three attempts to remove Haughey had been botched. 
+            </p>
+          <p>
+            <quote> "I think there was a lack of trust among some of us about the reliability of the others because of the way the heaves against Haughey had gone. At this stage each regarded the other as wimps because of what had happened before," </quote> said one of the plotters later. Some strongly anti Haughey TDs in Fianna Fáil , like Bobby Molloy and Pearse Wyse, had had a stomachfull of conspiracies and were not involved in any way at this stage. A serious car crash in November, which could have killed O'Malley, gave him a severe shock and that put back discussion yet again. 
+            </p>
+          <p> While they waited to see if a new party would get off the ground McDowell and O'Leary drafted a divorce Bill. O'Leary introduced the Bill in the Dáil but only five TDs supported it. However, it added to the pressure on the Fine Gael-Labour coalition which was theoretically committed to holding a referendum on divorce. Shortly afterwards the Anglo-Irish Agreement, signed by Garret FitzGerald and Margaret Thatcher on 15 November 1985, was denounced in the strongest terms by Haughey. The Fianna Fáil  leader had earlier dispatched Brian Lenihan to the United States to lobby leading politicians against the planned Agreement. This attempt to sabotage an Anglo-Irish accord infuriated Irish-American politicians, particularly the Speaker of the House of Representatives, Tip O'Neill, and did nothing to enhance Haughey 's reputation. 
+            </p>
+          <p> When the Agreement was announced the old divisions in Fianna Fáil  were exposed once again. The Agreement was welcomed by O'Malley and former Taoiseach Jack Lynch and on 20 November Mary Harney issued a statement in favour, saying she would vote for it. She followed this up by going through the government lobby along with O'Malley. Expelled from the party a week later she now joined O'Malley as an independent and continued to encourage him to form a new party. Harney 's strong advocacy of a new party and Fianna Fáil  's utterly negative attitude towards the Anglo-Irish Agreement rekindled O'Malley 's enthusiasm and he now committed himself fully to the project. 
+            </p>
+          <p> At a meeting in Paul McKay 's house in late November the decision was finally taken to launch the party. McKay and McDowell leased premises at South Frederick Street. A discussion paper was prepared on the aims of the new party, to be called the Progressive Democrats. RTE reporter and former young Fianna Fáil  star Pat Cox had joined the planning at this stage and his advice counted for a lot with O'Malley. Rumours began to circulate in political circles by mid-December that something was up and the newspapers carried speculation that O'Malley was about to establish a new party. 
+            </p>
+          <p> The Progressive Democrats were finally launched on 21 December 1985. To begin with the party had just two TDs, O'Malley and Harney. In acknowledgement of his work in establishing the party McDowell was appointed chairman, which emphasised that the PDs were not simply a Fianna Fáil  dissident rump. Michael O'Leary had been willing to join but O'Malley thought this might give the impression that the PDs were simply a refuge for people who couldn't find a home elsewhere. So despite the fact that he had been in on the planning of the new party there was no room for him in it. It was a decision that the founders of the PDs were later to regret, not just on a personal level but because O'Leary, whatever his political inconsistencies, was a marvellous vote-getter and a potential seat was thrown away. 
+            </p>
+          <p> Gemma Hussey records in her Cabinet diaries how the involvement of McDowell came as a blow to Fine Gael. <quote> "Dessie O'Malley 's new party, the Progressive Democrats, was announced today. Michael McDowell is the chairman. Will it hurt Fianna Fáil  more than us? It is depressing that Michael did this; it must be hurtful to Garret." </quote>
+          </p>
+          <p> Four days before Christmas seemed an odd time to launch a political party but the timing actually worked to great advantage. The PDs dominated the headlines and news bulletins and O'Malley sounded very confident as he went on radio asking for donations of <amp> pound sign </amp> 150,000 a year to make the PDs a viable prospect. In the early days of the new year the party took off. Advertisements were placed in the papers on 2 January seeking money and supporters, and the party headquarters were inundated with people wanting to get involved. By 6 January over four thousand people had enrolled as members and <amp> pound sign </amp> 25,000 was contributed by public subscription. Over a thousand people attended the first party constituency meeting in the Marine Hotel in Sutton and the major parties began to sit up and take notice. 
+            </p>
+          <p> Haughey went on radio a few days later and expressed the view that the PDs were not acting in the national interest, but the crowds continued to flock to their public meetings. At these early meetings O'Malley hammered home the core message of the party – that the state was strangling the economy through an involvement matched only by the communist countries of Eastern Europe. He committed the PDs to cutting taxes as the essential first step in putting the economy right. To an electorate crippled with personal taxation, disillusioned with a stagnant economy and rising unemployment, the new party 's message sounded attractive. O'Malley 's imposing presence and Mary Harney 's abilities as a speaker contributed to the air of excitement generated at those meetings. 
+            </p>
+          <p> It was a very unsettling time for Fianna Fáil . A significant number of activists in constituencies like Dun Laoghaire, Dublin South and the Cork City constituencies began to desert to the PDs. The question was whether the deputies for those areas, some of whom had been close to O'Malley, would follow suit. There was a wide expectation in both Fianna Fáil  and the PDs that Dun Laoghaire TD David Andrews would switch parties and there were rumours about Seamus Brennan from the neighbouring constituency. Brennan, however, set his face completely against joining and in fact spent a lot of time trying to persuade wavering Fianna Fáil  deputies to stay in the party. In the middle of January when rumours developed that Cork TD Pearse Wyse was on the verge of leaving to join the PDs, Brennan and Bobby Molloy were dispatched by Haughey to try and get him to stay on. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/115.00000</textSigle>
+            <title>Telling it Like it Is</title>
+            <domain>PopSocSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Cathleen O'Neill</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-020$A">
+          <p> Many Dublin streets are named after the trades and workers who set up their homes here more than 1,000 years ago. Consider Tailors Hall, the Linenhall or Weavers Square. Records still exist – 900 years later – of the butchers who sold meat from the Fleshambles. The potter who worked his wheel over 700 years ago is still remembered in Crocker Street as is the tanner in Skinners Row or the smith in Copper Alley. 
+            </p>
+          <p> Seventeen years ago, employment was the norm and not the exception in Kilmount. Almost every family had a working head of household. Suburban trains and buses ferried workers to jobs along the North Wall or Inner City. Many were men who worked in the construction industry, car assembly plants or the small engineering firms that flourished in the early 1970s. Other traditional sources of employment were the haulage and cargo firms along the dockside. Then there were jobs in firms such as Kosangas, Gouldings, Smith and Pearsons, Noyeks or Wigoders. Most of these have closed. Reasons for these job losses are many and the following are just general examples. 
+            </p>
+          <p> The oil embargo of the mid-70s and the resultant recession and spiralling inflation, started the slump still experienced by the Kilmount workforce. Short-time and lay offs became commonplace and workers lost jobs, many never to work again. Imports coupled with changes in production methods caused job losses in the car assembly industry. Changes in technology meant that many skills became obsolete. The printing trade suffered particularly as did the associated industries. Many dockers were made redundant as goods were increasingly shipped by container. 
+            </p>
+          <p> Recession in the construction industry during the early 1970s and 1980s meant many of the men in Kilmount lost their jobs and have never been employed since. Cutbacks in State services in the 1980s led to more job losses. Dublin Corporation and Dublin County Council stopped providing essential repairs to local authority houses and flats. Workers were then laid off. 
+            </p>
+          <head>
+            <hi rend="bold"> Kilmount </hi>
+          </head>
+          <p> Some families have succeeded in making the transition from work to unemployment. Their story is one of struggle and huge personal cost. For others, it has resulted in marital breakdown, children leaving home or being put into care. Many women end up relying on tranquillisers in order to cope "when they have nowhere to turn to anymore". 
+            </p>
+          <p> The head of household was employed in just 38 (48 <amp> per cent sign </amp>) of the households in our survey, while 42 (52 <amp> per cent sign </amp>) were in receipt of welfare payments. Of these, 22 (26 <amp> per cent sign </amp>), all male, were receiving unemployment payments. Three of these were in receipt of Unemployment Benefit and the remaining 19 received Unemployment Assistance. The period of unemployment ranged from as little as eight weeks to 15 years. Four of the 22 had been employed as skilled workers in their last jobs (chef, roofer, tiler, painter). Three others had been in semi-skilled work, such as driver or storeman, while the remaining 17 had all been all unskilled workers such as cleaners, labourers and yardmen. 
+            </p>
+          <p> Along with those who are unemployed, there are also ten female heads of households who are lone parents and in receipt of social welfare payments. Since the Social Welfare Code perceives these women as having family responsibilities and thus being unavailable for work, they are excluded from registering as officially unemployed. They are, consequently, also excluded from government-funded training and employment schemes. Also, many married women who gave up their work when they got married are now anxious to return to the workforce. It is difficult for married women or women with children to re-enter the workforce. In addition to the shortage of jobs, a serious lack of creche and childcare facilities prevent women from having access to work. 
+            </p>
+          <p> It is clear that few families in Kilmount have access to secure well paid jobs. Most would form part of the unskilled workforce but are excluded from the workforce altogether. Many are forced into long-term unemployment. The people of Kilmount, for the most part, live in relationships of economic and social dependence. Class inequality in Ireland has become more pronounced over the last 20 years. It seems that present economic arrangements are creating a permanent unemployed class with deepening economic divisions in our society. 
+            </p>
+          <head>
+            <hi rend="bold"> Case Study 4 : Anne and Noel </hi>
+          </head>
+          <p> Anne and Noel moved to Kilmount in 1973. Before the move they lived in a three-bedroom flat in Ballymun. They had four children at the time and Anne was expecting her fifth. She became pregnant to qualify for a Corporation house. Noel was working as a builders ' labourer, work was plentiful and Noel could pick and choose from a variety of jobs. 
+            </p>
+          <p> Anne and Noel were delighted when they were allocated a house by Dublin Corporation. <quote> "We joked all the way home about being property owners". </quote> The couple knew that living in a house would be more expensive. Rent would be higher and they would have to buy coal and pay for hot water, unlike the flat in Ballymun where central heating and running hot water were included in the rent. However, they were hopeful about the future. They liked Kilmount and the children quickly settled into their new schools. 
+            </p>
+          <p> The couple were saving for a planned kitchen extension when the <quote> "world came tumbling down around our ears". </quote> Noel had been working for a sub contractor, who in turn was working for a building firm. The building firm developed financial difficulties and was unable to pay the subcontractor. Noel 's firm folded and his boss left the country owing thousands of pounds. 
+            </p>
+          <p> Noel had trouble tracing his cards and other records which led to difficulties with dole and pay-related benefits. They lived on Supplementary Welfare Allowance for three months while this was being sorted out. But the allowance was insufficient and they <quote> "slowly slipped into debt". </quote> Noel continued to look for work but had no luck because of the decline in the construction industry. He has had very little work in the last nine years. 
+            </p>
+          <p> Anne explains: <quote> "Things have been very bad these last few years. He doesn't look for work any more. He got very depressed when they told him he was too old for work – can you imagine the effect that has on a many his age? He was 43 at the time". </quote>
+          </p>
+          <p> Noel worked in the black economy for a short while, as a security guard for <amp> pound sign </amp> 1.50 an hour, two or three nights per week. The experience unnerved him because he was afraid that someone would report him to the authorities and the family would lose their social welfare payments. Anne was relieved when he <quote> "jacked the job in, the wages were only slave labour anyway, and he wouldn't have a leg to stand on if he was attacked on the job". </quote>
+          </p>
+          <p> The family is in deep debt now. Being on welfare over a long period of time has meant they have been forced to borrow money from a loan man to pay rent arrears to stave off eviction proceedings. They have also borrowed from a loan company to pay for school expenses for four remaining school children. Their eldest boy has finished second level school and is now looking for work. 
+            </p>
+          <p> Anne feels depressed about the way they live now and her depression is made worse because there is never any money to pay for house repairs and decorations. <quote> "The house is in rag order and I can do nothing about it, no matter how hard I work it never looks any better". </quote>
+          </p>
+          <p> Anne and Noel have been looking at ways to try and resolve their difficulties. One possibility is for Noel and the eldest boy to travel to England. They plan to work on a building site and rent a flat together. They will travel home on alternate weekends throughout the year. Commuting like this is one way of easing the misery for the family who all hate the idea of Noel going. 
+            </p>
+          <p> Anne concluded: <quote> "None of us are happy about the family breaking up but it 's happening anyway because of the strain. Anything is better than this poverty, hiding from the loan man when I don't have his money and always dreading strange knocks at the door. England might just give the young lad a chance, he's very talented and can do anything with his hands. Noel plans to come home for good as soon as our bills are straightened out. Maybe by that time things will have improved on the job front at home". </quote>
+          </p>
+          <head>
+            <hi rend="bold"> Low Paid Work </hi>
+          </head>
+          <p> For many people the only alternative to unemployment is low-paid work. Semi-skilled or unskilled workers usually receive lower pay than their skilled counterparts and tend to have little security in their jobs. They are more likely to be laid off when work is slack and these interruptions can affect pension rights or any chance of saving. Families on low pay often have a lifestyle that is little different to those who are unemployed and living in poverty. 
+            </p>
+          <p> Working conditions are often harsh. The work, often shift work is menial and repetitive. Low-income workers are ineligible for Supplementary Welfare Allowance payments to help with large household bills, regardless of any crisis or exceptional need that might occur. They are not usually granted a medical card, unless they have an ongoing or serious illness. They are often unable to avail of help with school books and exam fees, because most schools need 'proof' of poverty. Yet even low-paid insecure workers have certain advantages over those who are unemployed. 
+            </p>
+          <p> They are gainfully occupied, they have dignity and a sense of their self worth. Society recognises the value of work. Work is not just about money but also about making a contribution. Workers have a social life outside of family and community. The workless seldom venture outside the area unless it 's for rituals connected with social welfare payments. Workers may have entitlements and benefits connected to the job such as a pension fund, savings club, sports and leisure activities or even annual social outings that are work related. Involvement in trade unions allows the members to obtain organising and administrative skills. 
+            </p>
+          <head>
+            <hi rend="bold"> Case Study 5: Tom and Vera </hi>
+          </head>
+          <p> Tom and Vera have six children. The eldest child has emigrated to London in search of work. The second eldest left school early, and is now unemployed and waiting to do a FAS course. The remaining four children are still at school. Until recently the family lived on Unemployment Assistance, coupled with Supplementary Welfare payments for fuel allowance, shoe grants and help with ESB bills. 
+            </p>
+          <p> Vera told us of their lifestyle 17 years ago. They moved to Kilmount when the area was "brand new". They had three children at the time. Tom had a secure job in plant maintenance with a firm on the North Wall. The firm pulled out of Ireland during the oil crisis. Tom received a redundancy payment which kept the family going for a couple of years. 
+            </p>
+          <p> After two years of applying for jobs Tom stopped looking for work altogether. According to Vera: <quote> "He became moody and depressed. He stopped talking to us. The whole family was affected by his moods". </quote>
+          </p>
+          <p> Tom panicked when he reached the age of 50. He had been unemployed for nine years and was afraid that he would never work again. Unknown to his wife or family Tom accepted a job as a cleaner. The job paid less money than his social welfare payments and made him ineligible for Supplementary Welfare Allowances. He made a decision to accept a job for little pay because he was anxious to return to the workforce. Tom later explained to his family that he <quote> "had packed in the dole because he had to get out of the house before he went mad". </quote> Tom believed that it was easier to get a job if one already had a job. Particularly so for someone of maturing age such as himself. His new wages (after tax and social insurance) worked out at a few pounds less than unemployment assistance. He was more than willing to <quote>"pay this price for his dignity". </quote>
+          </p>
+          <p> Vera wasn't sure if the price was worth it. The family now had less money, no welfare benefits and they had also lost their medical card for a while. It was re-issued later due to exceptional health problems. Neither Vera nor Tom were aware of the Family Income Supplement for those working for a low income. During the interview we told <sic> then </sic>
+            <corr> them </corr> about FIS and they have since applied for it. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/116.00000</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Brice Dickson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1995</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-011$A">
+          <head>
+            <hi rend="bold"> Rough Justice </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Brice Dickson </hi>
+          </head>
+          <p> People sometimes claim that Northern Ireland is an over-researched society. They point to the myriad of books and articles devoted to the place and duly pronounce that very little else remains to be said. The truth is, nevertheless, that there is still some relatively unexplored territory. 
+            </p>
+          <p> One of the fields which is most obviously in need of further research is that of criminology – the study of crime, criminals and criminal justice agencies. There is in fact a yawning gap in local knowledge about the exact nature of criminal activity in Northern Ireland, the kinds of people who commit crimes, their motivation, recidivism, and the impact of criminal behaviour on the condition of society in general. 
+            </p>
+          <p> This ignorance is all the more remarkable given the level of violent activity in the North since 1969. It is almost as if the 'special' nature of that violence, its 'political' links, rendered 'ordinary' crime less worthy of attention. Now that politically motivated violence has mercifully receded, the time has surely come to look in more detail at the sorts of issues which have been the subject of debate in less divided societies. 
+            </p>
+          <p> The mechanisms for conducting such studies are now in place. Unusual to give credit to a government department, the recent conversion of the Northern Ireland Office to the study of crime must be applauded. That office now publishes an annual research strategy and is positively on the lookout for projects to fund: its budget may be tiny compared with that of the Home Office, but at least the need for local research has at last been recognised. 
+            </p>
+          <p> The NIO is also largely responsible for the establishment of an Institute of Criminology and Criminal Justice at Queen 's and for the funding of postgraduate studentships in criminology at both Queen 's and Jordanstown. Moreover, several officials from the Criminal Justice and Statistics Divisions of the NIO are strong supporters of the activities of the NI branch of the British Society of Criminology, which has been flourishing for the past three of four years. Each autumn the NIO sponsors a residential Criminal Justice Conference for some of the key players in statutory and voluntary agencies involved in the administration of criminal justice. 
+            </p>
+          <p> The very fact that voluntary agencies are being allowed greater influence is an indication of the sea change on the part of the government. Organisations such as Extern, NIACRO, Victim Support and the Committee on the Administration of Justice are now actually solicited for advice on some issues, rather than sidelined as subversives or do-gooders. Statutory bodies like the Police Authority and the Standing Advisory Commission on Human Rights are beginning to recognise the value of consultation and public debate on criminal justice issues, even if they do not always ensure that these processes are fully inclusive (and even if they themselves are often excluded from such processes when initiated elsewhere). 
+            </p>
+          <p> Not all bodies, however, are yet co-operative. The RUC is still fond of holding its own conferences while refusing to attend anyone else 's. Within the <sic> resent </sic>
+            <corr> recent </corr> past the Independent Commission for Police Complaints has twice refused to participate in debates at the University of Ulster on what changes, if any, are required to the complaints system in Northern Ireland. The Crime statistics published in the Chief Constable 's Annual Report are not accompanied by any in-depth analyses, nor are the figures issued by the Court Service (again, the NIO 's Commentary on Crime Statistics is the best document available). The DPP 's Office still refuses to issue either public guidelines on <sic> it's </sic>
+            <corr> its </corr> prosecuting policies or annual reports on its achievements. 
+            </p>
+          <p> A great deal remains to be done. In particular, the results of the first ever Northern Ireland Crime Survey, which are currently being tabulated by the NIO, require detailed scrutiny. They need to be compared with the results of surveys taken elsewhere and with other equivalent figures taken in the North, such as social attitude surveys, which include questions on crime and policing. 
+            </p>
+          <p> There also needs to be careful work on issues such as where crime is most prevalent, what conditions help it to flourish, whether punishments are effective in diverting offenders (particularly young offenders) from further illegal acts, and, most sensitively of all, what is the connection between 'ordinary' crime rates and paramilitary crime rates. The very definition of criminal conduct – whether victimless crimes such as drug-taking should be punishable – and what more can be done to combat white-collar crime should also be high on the research agenda. 
+            </p>
+          <p> The question of the employability of persons with criminal convictions, especially in jobs that might bring them into contact with physically or emotionally vulnerable people, is very topical too. Following the report into the Martin Hurson case 1994, the government is at last about to issue guidance on using the DHSS 's Pre-Employment Consultancy Service, which maintains a register of 'suspect' employees. There are clashing rights at stake at this point, so it is to be hoped that the guidelines will be carefully weighted in the balance before any overly-invasive procedures are put in place. 
+            </p>
+          <p> A recent book, on the proceedings of a conference held in the Old Museum Arts Centre in September 1994, casts valuable light on many criminological issues within NI. It contains a useful chapter by John Morrison on how misleading the 'official' crime statistics may be (the difference between recorded crime and actual crime is, as we know from the recent controversies provoked by Michael Howard 's conclusions based on the English figures, crucial) and Monica McWilliams explains how the masculinity and militarism of the RUC and paramilitaries are reflected, respectively, in the down-grading of domestic violence as a crime and the harsh treatment meted out to juvenile hoods involved in petty crimes. Ian Paisley Jnr reminds us that you do not have to be a nationalist to distrust the police, while John Brewer lists what he thinks are twelve salient features of policing in any divided society (to me not all of these are by any means inevitable) 
+            </p>
+          <p> Two further chapters, one by Willie Thomson and Barry Mulholland, the other by the book 's editor Liam Kennedy, illuminate greatly the murky subject of paramilitary punishment shootings and beatings. The former concentrate on the mental health implications for victims of this 'informal' justice and in a nice reversal of the usual statistic trotted out on unemployment differentials, Kennedy observes that a male catholic nationalist, especially if young, working class and unemployed, is twice as likely to suffer assault and mutilation at the hands of paramilitaries as his protestant unionist counterpart. 
+            </p>
+          <p> Despite its title, the book covers a lot more than crime in west Belfast, though it does tend to focus on crime linked to the troubles. At many points it raises more questions than it answers – a not unusual trait of conference proceedings. 
+            </p>
+          <p> Kennedy 's book should be read in conjunction with another set of conference proceedings issued in October by the International Association of Juvenile and Family Court Magistrates, whose secretary is the super-efficient Dr. Willie McCarney of the NI Juvenile Courts Association. For years, Dr McCarney has been beavering away trying to publicise good criminological work in this Association 's Lay Panel magazine, which he edits. Last April 's conference was perhaps the most ambitious, and successful international criminological conference ever held in NI. It underlined the fundamental point that problems associated with juvenile crime here – with or without the paramilitary overlay – are not so different from those encountered in Brazil, France or the USA. Once again, the need for further detailed research was declared to be paramount. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/116.00001</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Brice Dickson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1995</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-011$B">
+          <head>
+            <hi rend="bold"> It 's all the fault of the working class… </hi>
+          </head>
+          <p> Having been out of the country for a few months, I canvassed acquaintances about how much they knew about Initiative '92 and the Opsahl Commission, <hi rend="italic"> Fiona Stelfox writes </hi> . Many knew very little and some were negative about the whole idea. Perhaps they were part of the silent middle classes highlighted in many submissions as having abdicated their civic duty. 
+            </p>
+          <p> Two themes scream from the pages of the report. The first is the utter disenfranchisement of all Northern Ireland society – neither side can claim this as their own any more. From the most trivial to the most fundamental matters, we do not make our own decisions. The result is the breakdown of the framework through which people usually participate in a democratic society. It does not even seem to occur to us to participate in anything like the numbers one would expect in a healthy democracy. Many authors of submissions were crying out for someone to address the 'bread and butter' issues which affect their lives. Let us hope that the politicians who, as was rightly pointed out, never have to make the difficult decisions (like the closure of a hospital), listen to these voices. 
+            </p>
+          <p> The second theme is the manifest common sense and pragmatism of the submissions – in contrast to the empty posturing of many Northern Irish politicians. The Sinn Féin issue was a good example: it was pragmatically recognised across the board that to attempt a settlement without the involvement of Sinn Féin was, at best, wishful thinking and, at worst, prolonging the violence. The people who have borne the brunt of this conflict, like the north Belfast women who made an oral submission, are the ones calling most loudly for a pragmatic approach. It is only the middle classes who can afford to stand on their esoteric principles, vowing never to give an inch of the ground that someone else is having to die to keep. 
+            </p>
+          <p> These two themes present a challenge to us all. The people who contributed to Initiative '92 showed a sophistication of political analysis which one has yet to hear from most Northern Ireland politicians – but then we elected them. This raises the question of the Westminster electoral system, which, as was pointed out, contributes to division by wasting the votes of all those not cast for the winning candidate. The results in an average English constituency are bad enough, but in Northern Ireland it is much, much worse, with one ethnic/religious grouping frequently feeling effectively unrepresented. 
+            </p>
+          <p> Of course, the best systems are only as good as the people who operate them. We are still left with the problem of how we 'feel' about each other – a very real problem, highlighted in many submissions. As Prof John Darby points out, there is nothing inherently wrong with conflict: what is wrong is that we seem unable to resolve conflict without violence. Part of the explanation clearly likes in mistrust between communities and we are only going to be able to overcome that by beginning to experience each other in ways that challenge pre-existing prejudices and misconceptions. The widespread support for cross-community initiatives and, in particular, for integrated education indicates that many are keen to seek the opportunity to experience each other differently. 
+            </p>
+          <p> Whatever the specifics of the submissions, the Opsahl Report is an inspiring and heartening read. The process has clearly been beneficial, creating a forum which allowed people to participate. Perhaps we are eventually reaching the conclusion that we in Northern Ireland are not a 'problem', but a people struggling through the painful process of trying to shape our society for the future. Having lived abroad for the last few months, I returned with the feeling that our 'problems' are not as bad as in other places. On the contrary: we have initiated many ideas which could offer lessons to others. 
+            </p>
+          <p> Initiative '92 has shown that the will to take responsibility for our destiny is there. But it needs a valve through which it can be articulated. We are making the choice to begin our sentences with <quote> 'A possible way forward might be…' </quote> instead of <quote> 'The problem is…' </quote> The next step is for our politicians to do the same. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/119.00000</textSigle>
+            <title>Irish Architect</title>
+            <domain>PopTech</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Ann McNicholl</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1995</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-038$A">
+          <head> GETTING NATURAL LIGHT INTO BUILDINGS </head>
+          <head> ANN MCNICHOLL </head>
+          <p> It is difficult to overestimate the significance of daylight, and of sunlight, in the character of a building and in the lives of the people who use it. There are, of course, some building types, such as theatres or nightclubs, where being cut off from the world outside is an essential part of the experience. In others, shops or museums for example, daylight may be excluded from large areas of the building so as to give full play to display lighting. But most interiors which are to be occupied by people (as opposed to goods or machinery) need plenty of light and, with global warming and 'Sick Building Syndrome' on our minds, natural light and ventilation have once again become critical determinants in the form our buildings take. 
+            </p>
+          <p> Daylight is variable and unpredictable. It is these characteristics which account for peoples liking for it and for the sparkle that it brings to the interior of a building but which also make it challenging to work with. We want sunshine and daylight, but we don't like glare, downdrafts, loss of privacy, ultra-violet damage or severe temperature swings. Too much glazing, the wrong kind of glazing, or glazing in the wrong place may produce heat losses or gains which have to be countered by artificial heating or cooling. So, good daylight design must form part of a considered architectural strategy for the building as a whole, controlling and exploiting the available light, maximising its advantages and minimising its disadvantages. Most of the critical decisions are made during the early design stages. 
+            </p>
+          <p> The design possibilities of the 'window' are, of course, extremely rich. Whether treated as a simple hole in the wall or as a complete three-dimensional element it makes a fundamental contribution to the quality of interior spaces and the external appearance of the building. The way in which it frames a view, captures light, or channels warmth, sound and air, helps determine the character of any room – whether it is intended to be simply humane and comfortable, visually exciting, or solemn, with symbolic and spiritual impact. 
+            </p>
+          <p> The following paragraphs review some new and traditional daylighting devices and products which can be used to control daylight and sunlight, and to moderate the conflict between good daylighting and a good thermal environment which glazing so often entails. Lightwells, roof monitors and clerestory windows are well established devices for getting light deep into buildings. The atrium can be seen as an elaborated and inhabited lightwell, lightshelves and coated or prismatic glasses as sophisticated shades and blinds, while the concept of the lightpipe or transparent insulation is relatively new. Shading devices per se are not described, but these are as important, and selection of the appropriate type is particularly dependent on local climatic conditions. 
+            </p>
+          <head>
+            <hi rend="bold"> Rooflights </hi>
+          </head>
+          <p> Because the sky is generally brighter at its zenith than near the horizon, a horizontal rooflight is proportionally three times more effective as a source of daylight than a vertical window – and it casts its light over a space in a more uniform way. Direct sunlight can be diffused by translucent glazing and glare controlled by baffles. Very beautiful effects can be created by fitting angled reflectors below the rooflight or locating one beside a wall, so that ceilings or walls are washed with light. 
+            </p>
+          <p> A disadvantage of the horizontal rooflight, compared to a vertical window, is that it collects more light and heat in summer than in winter – usually the opposite of what is desired. For this reason vertical or near-vertical rooflights, clerestories, sawtooth or roof monitors are often preferred for lighting single-storey deep spaces. They can be oriented North, South, East or West as necessary and screened with conventional shades. The duration and quality of light can be enhanced by placing light-catching scoops on the roof outside the glazing, and the distribution of reflected light into the space below controlled by rooflight geometry. 
+            </p>
+          <head>
+            <hi rend="bold"> Lightshelves and Louvres </hi>
+          </head>
+          <p> The lightshelf, a flat or curved element placed at the window opening above eye level, redirects incoming light onto the ceiling and simultaneously provides shading for the area of the room close to the window. The underside of the shelf can also redirect light from a high-reflectance exterior ground surface onto the floor inside the room. Lightshelves are most efficient when they are external, cause minimal obstruction to the window area, have specular reflective surfaces, and are combined with a ceiling of high reflectance. Interior shelves have been found to be less useful – they obstruct daylight entering the room while providing little compensating benefit. The shading control functions of a fixed lightshelf are least effective for low-angle sunlight, and in northern Europe should generally be considered only if glare is a severe problem, or window size is restricted and internal surfaces (other than ceilings) must be of low reflectance. 
+            </p>
+          <p> Adjustable louvres with a specular finish on the upper surfaces of their blades are more responsive than lightshelves and, if completely retractable, need cause no obstruction of daylight on overcast days. Sophisticated fixed-louvre systems, incorporating lenses and mirrored faces, are now available. These are custom-made for the particular latitude and facade orientations and can combine shading with redirection of both direct and diffuse light deeper into the building. 
+            </p>
+          <head>
+            <hi rend="bold"> Lightpipes and Lightducts </hi>
+          </head>
+          <p> These are among the more mechanically complex daylighting devices. Sunlight is collected by heliostats (mirrors controlled by a tracking device), concentrated by means of mirrors or lenses, then directed to the core of the building through shafts or along acrylic rods or fibreoptic cables. Because they depend on direct sunlight, and are relatively expensive to install, they are cost-effective only in climates where blue skies and clean air can be guaranteed for much <sic> or </sic>
+            <corr> of </corr> the year. (Energy-efficient back-up lamps can be fixed at the head of the shaft to substitute for sunlight during infrequent overcase conditions.) The recent development of thermo-hydraulic tracking systems powered by solar cells should improve economic viability. 
+            </p>
+          <head>
+            <hi rend="bold"> Atria </hi>
+          </head>
+          <p> The daylight performance of an atrium is complex. Its proportions determine the amount of direct daylight reaching the floor – wide, shallow <sic> . </sic>
+            <corr> , </corr> square atria perform better in this respect than do deep, narrow, rectangular ones. The design of the atrium walls significantly affects the distribution of light once it has entered the atrium. Dark finishes reduce internal reflectance and the deeper the atrium the more important this becomes. Windows in the atrium wall reduce reflectance also – the upper walls are the most critical in reflecting incoming light down into the atrium, so it is best to limit windows in this area. 
+            </p>
+          <p> This arrangement corresponds with the requirements of rooms facing into the atrium – rooms at the upper levels get <sic> </sic> of light but need protection from glare, while those at the base need to maximise the amount of light they receive. Design strategies include making rooms near the base lower, increasing their floor to ceiling heights, or stepping up the upper floors in successive steps so that all rooms have some view of the sky. (The same principles will apply to a building facade on a narrow street.) The closer the room is to the bottom of the atrium the greater its dependence on light opened from atrium walls and floor. Reflectors may be fixed on the windows of lower rooms to redirect more of the zenithal onto their ceilings, but this is generally cost-effective only when other considerations determine that the reflectances of atrium walls and floors must be low. And while rooms further from the atrium roof may have lower light levels, they may have better light quality in terms of uniform distribution and absence of glare. 
+            </p>
+          <p> Putting any glass roof over an open court will reduce daylight levels in the court by at least 20 <amp> per cent sign </amp>, and sometimes by 50 <amp> per cent sign </amp> or more. So the structure of an atrium roof should minimise obstructions to the glazing area and its connections to the building should be such that light is allowed to wash the atrium walls. 
+            </p>
+          <head>
+            <hi rend="bold"> Transparent Insulation </hi>
+          </head>
+          <p> Transparent Insulation Materials (TIM),. which tend to be translucent rather than truly transparent, were initially developed primarily as insulation for Trombe wall assemblies. But because they transmit light, they can also function as a glazing material. There are several categories of TIM, using different materials and a variety of forms – foamed, capillary, honeycomb, fibre and gel. Most need protection on one or both sides by glass or plastic sheets. Light transmission of TIM ranges from 45 <amp> per cent sign </amp> to 80 <amp> per cent sign </amp>, with a reduction of approximately 8 <amp> per cent sign </amp> for each sheet of protective glass used. Insulation values are very much better than for glass. For example, 98mm hexagonal honeycomb polyamid TIM has a light transmission factor of 61 <amp> per cent sign </amp> combined with an insulation value five times that of a double glazed window. TIM can be incorporated into purpose-made window assemblies by most window manufacturers. Costs tend to be approximately three times those of conventional double-glazed windows. 
+            </p>
+          <head>
+            <hi rend="bold"> Glazing Materials </hi>
+          </head>
+          <p> A conventional window, single-glazed with clear float glass may transmit approximately 85 <amp> per cent sign </amp> of the light that falls upon it. Double or triple glazing will reduce light transmission to 70 <amp> per cent sign </amp> and 60 <amp> per cent sign </amp> respectively. Where lighting requirements demand larger areas of glass than would be thermally satisfactory, specially treated glass can be used to control heat losses or gains. 
+            </p>
+          <p> The early tinted glasses reduced solar heat gain to some degree but also cut down daylight transmission and distorted the colour of the landscape outside. Heat absorbing glasses do not reduce daylight transmission to quite the same degree, but reduce heat gain by only 10 <amp> per cent sign </amp> because a large percentage of the heat absorbed is re-radiated into the interior. Reflective glass blocks solar radiation effectively (reflectances up to 50 <amp> per cent sign </amp> are available) but, like tinted glass, it blocks light as well as heat, and it continues to do so in winter when heat gain and daylight may be beneficial. Selective 'low-e' double glazing. with a resistance to heat loss equivalent to that of triple glazing, has a light transmission factor of approximately 80 <amp> per cent sign </amp>. 
+            </p>
+          <p> Current developments include the responsive chromogenic glasses. Electrochromic glass changes its optical absorption properties and becomes dark or cloudy in response to an externally applied electric field. The opacity disappears when the field is reversed. It can be readily integrated into a responsive building climate control system. Thermochromic glass switches between a heat-transmitting and a heat-reflecting state at selected temperature thresholds and photochromic glass darkens and lightens in response to changes in light intensity. At <sic> presen,t </sic>
+            <corr> present, </corr> material costs of all three are high and durability uncertain but improving. 
+            </p>
+          <p> Glass to which a holographic film has been applied does not block radiation but diffracts it. The film can be designed to direct incoming sunlight on to a reflective surface, such as the ceiling, or deep into a room. It can be designed also to reflect sunlight coming from pre-defined angles (high-angle sun on South facades, or low-angle sun on East and West facades, for example). Up to four images containing different 'instructions' can be combined in one layer. A view out through the window is retained but from some viewing angles there is a rainbow effect. Its performance for diffused light is poor, but research is continuing. Costs are not high but at the moment holographic film is not available in the sizes needed for the building industry. 
+            </p>
+          <p> Prismatic glass (or plastic) controls transmitted light by refraction and can be used to redirect or to exclude sunlight. The direction of incoming daylight is changed as it passes through an array of triangular wedges whose geometry can be designed for particular conditions and orientations. In several recent applications it has been used to reduce glare. Prismatic glass is translucent rather than transparent, so cannot be used where a view outdoors is required. Normally a prismatic refracting panel consists of two sheets with their prismatic faces facing each other to protect them form dust accumulation. They can also be used within double-glazed units. While the sheets themselves are inexpensive, the overall construction cost is higher than for conventional glazing. Prismatic assemblies, including sophisticated systems incorporating silvered wedge-faces and several panel types, are increasingly available. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/122.00000</textSigle>
+            <title> The Engineers Journal</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> Jim Connell</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1990</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-040$A">
+          <head>
+            <hi rend="bold"> Radon in Buildings <amp> asterisk </amp>
+            </hi>
+          </head>
+          <head>
+            <hi rend="bold">J. Connell, B.Arch, MRIAI
+                    Senior Research Architect, Environmental Research Unit </hi>
+          </head>
+          <head>
+            <hi rend="bold"> 1. Introduction </hi>
+          </head>
+          <p> For several years now members of the international radiation protection community have been expressing anxiety about the effect of natural radiation on the health of persons. It is expected that this concern will be given concrete expression in this country when the Building Regulations are introduced. They are expected to call for precautions to be taken to avoid danger to the health of occupants of buildings caused by radioactive substances in the ground under buildings. This will include radon which is a radioactive gas. 
+                </p>
+          <p> Designers of buildings will be faced with a problem in complying with this requirement. This arises firstly, due to the difficulty in predicting prior to construction the likelihood of harmful levels of indoor radon <sic> occuring </sic>
+            <corr> occurring </corr> in the completed building and secondly, in advising on the type and extent of any precautions that should be taken at the design stage. There is also the matter of legal liability. It would be prudent at the present time for designers of houses, schools and certain other buildings of long time occupation, to raise the matter of radon protection with their clients, as otherwise, with the widespread awareness of the radiation problem, they could be held to be guilty of professional negligence. 
+                </p>
+          <head>
+            <hi rend="bold"> 2. Facts about Radon </hi>
+          </head>
+          <p> About 13 <amp> per cent sign </amp> of our total radiation exposure is made up from man-made nuclear and medical activities and the remaining 87 <amp> per cent sign </amp> from natural sources. Exposure to any form of radiation may cause harm to the exposed person or his or her descendants and there is no intrinsic difference between artificial and natural radiation in their biological effects. In contrast to the demand for strict controls over exposure to artificial radiation sources, relatively little attention has been given to control of exposures to natural sources. This may have arisen partly from a feeling that what is natural is without harm and also from a lack of awareness about precautions which could be taken. However, in recent years there has been a growing concern among those dealing with radiation matters about the long <sic> terms </sic>
+            <corr> term </corr> effects of radiation at all levels and the circumstances where exposure could, and probably should, be reduced. This is particularly so in the case of indoor exposure to radon and its decay products which accounts for over 30 <amp> per cent sign </amp> of our total radiation. 
+                </p>
+          <p> Radon is a natural radioactive gas that has no taste, smell or colour and requires special equipment to detect its presence. It is part of the decay chain of uranium, which is widely dispersed in the earths crust, and its best known decay product, radium, which is the immediate precursor of radon. Most soil and rock have traces of radon but the amount can vary in different parts of the country and at different times of the year. Being a gas, it can move through porous media such as fractured rock and soil and some is exhaled at the surface. When this occurs in the outdoor air it is dispersed in the atmosphere and diluted to low and harmless concentrations. However, once it percolates into a enclosed space such as a building it can accumulate to dangerous levels because dispersion is restricted by the limited ventilation. The concentration will depend on the radon levels in the soil gas, the construction details of the building and the available ventilation. Radon may also be introduced indoors in ground water supplied from a well, or from building materials containing traces of radium, but normally the amounts from these sources are not of any consequence in this country. 
+                </p>
+          <head>
+            <hi rend="bold"> 3. Entry Routes </hi>
+          </head>
+          <p> The increase in indoor levels of radon in recent decades is due most likely to the search for "tighter" building enclosures in order to reduce energy consumption. 
+                </p>
+          <p> These levels depend mainly on the concentration of the sub-floor soil gas and the available entry points in the ground floor area of the building. As these factors usually vary from building to building each case must be considered separately. The more fragmented and porous the underlying rock and soil the greater the amount of radon gas that can rise to the surface. This gas can enter a building in a convective flow through cracks and holes in the floor area and any gaps around service pipes and cables (Figure 1). It is usually pressure-driven due to the slightly lower indoor air pressure compared with that under the floor, a result of wind and temperature difference. As might be expected, elevated levels of radon resulting from soil gas are found mainly in basements and at ground floor levels. Also, radon gas is nine times heavier than air, and therefore tends to remain close to the ground. Radon is not normally a problem in high rise buildings and if an elevated level is found it is likely to have been caused by emission from the building materials used. 
+                </p>
+          <EdCm> picture </EdCm>
+          <head>
+            <hi rend="bold"> 4. Lung Cancer </hi>
+          </head>
+          <p> The reason for concern about radon is its association with an increased risk of developing lung cancer. Radon being radioactive disintegrates and gives off decay products known as daughters or progeny which are also radioactive. These are minute particles which when released in the air may be inhaled and deposited in the lungs. As they in turn decay they give a radiation dose to the lung tissues which may eventually cause lung cancer. The risk is related to the level and length of exposure and is normally considered as a lifetime risk. While few people these days spend a lifetime in the same house it would be foolish to ignore the risk completely and for some, the predictions over a lifetime are likely to be significant. 
+                </p>
+          <head>
+            <hi rend="bold"> 5. Occurrence in Ireland </hi>
+          </head>
+          <p> Radioactivity in air resulting from radon is measured in becquerel per cubic metre (Bq/m3). This unit of measurement means that radon is present at a concentration that emits one particle of radiation per second in a cubic metre of air. A survey carried out by Dr. J.P. McLaughlin of University College Dublin of a random sample of approximately 1300 houses in the State shows a median level of indoor radon of about 35 Bq/m3 throughout the country. 
+                </p>
+          <p>
+            <amp> asterisk </amp> The Editor wishes to apologise sincerely to Mr Connell for allowing the gremlins to wreak havoc with his excellent article when first published in the August/September issue. 
+                </p>
+          <p> However, levels in excess of 400 Bq/m3 were found in 1.5 <amp> per cent sign </amp> of cases with individual peaks rising as high as 1700 Bq/m3. Most of these were located in parts of counties Clare, Galway, Mayo and Cork, but even in these counties the vast majority of the sample houses had a low radon level. A more recent survey of over 500 houses in some western countries was carried out by the Nuclear Energy Board and U.C.D. to identify the distribution of elevated concentration in these areas. The results indicate that about 2.8 <amp> per cent sign </amp> had radon levels above 400 Bq/m3 and that 9.4 <amp> per cent sign </amp> were above 200 Bq/m3. 
+                </p>
+          <head>
+            <hi rend="bold"> 6. Reference Level </hi>
+          </head>
+          <p> Having a screening measurement carried out is the only way of knowing if a house has a radon problem. A recommended Reference Level for Ireland has been set by the Government at 200 Bq/m3 for the annual average radon gas concentration in an existing home. Above this level action should be taken to reduce it. The level of 200 Bq/m3 is also intended to apply to all future houses which ideally should be constructed so that radon concentrations are as low as reasonably practicable and be at least below this level. In existing houses, for levels up to 500 Bq/m3 it would be desirable to take action within a few years and where levels are over 1000 Bq/m3, within a year or so. 
+                </p>
+          <head>
+            <hi rend="bold"> 7. Risks </hi>
+          </head>
+          <p> For most people, the risk of developing lung cancer from radon is insignificant compared with other everyday risks. Nevertheless, despite the lack of complete agreement among experts on the precise risk, it has been calculated that exposure to the Reference Level of an annual average of 200 Bq/m3 corresponds to a lifetime risk of lung cancer of about 2.5 <amp> per cent sign </amp>. The normal lifetime risk of contracting lung cancer in Ireland is about 3 <amp> per cent sign </amp>. 
+                </p>
+          <p> International estimates now suggest that between 5 <amp> per cent sign </amp> and 10 <amp> per cent sign </amp> of lung cancer deaths may be caused by indoor radon exposure. There is also strong evidence which indicates a much higher risk from radon for cigarette smokers <sic> that </sic>
+            <corr> than </corr> for non-smokers. The National Radiological Protection Board in the U.K. in a 1990 publication puts this risk at 10 times that for non-smokers at all levels of exposure. This arises from a synergistic or multiplicative interaction of both carcinogens, which means that the combined effect exceeds the sum of the two effects taken independently. 
+                </p>
+          <head>
+            <hi rend="bold"> 8. Methods of Detection </hi>
+          </head>
+          <p> The two most common devices used for measuring indoor radon concentrations are the alpha track detector and the charcoal canister. The charcoal canister is a small container of activated carbon which absorbs radon. It is exposed in a living area for about a week and then sent to a laboratory for analysis. The alpha track gives a more accurate reading of the average exposure but must be left in place for a longer period, usually three months, to cover the widely fluctuating daily and seasonal variations. The detector consists of a small container which allows the alpha particles released by the radon to come in contact inside the container with a small piece of special plastic in which tracks are formed by the radiation striking it. After exposure for the recommended time it is also sent to a laboratory for analysis. The <sic> intial </sic>
+            <corr> initial </corr> screening measurement may indicate that there is no need for further action, but in some cases it may be necessary to take measurements over a longer period to get a more accurate estimate of the average level. There are other techniques requiring operation by trained personnel which can be used to give "instant" reading, but they are more expensive and, due to the normal variation in concentrations over a short period of time, would be certainly less reliable in determining the average radon level. 
+                </p>
+          <p> It is possible to take radon measurements in the ground on a prospective building site, but the results may be of limited value. Alfa track detectors may be buried in holes about 600mm deep and recovered after exposure for one week. If high readings are found there is no doubt about the need for preventative measures. Low readings in the ground, however, may not be taken as a guarantee of low concentrations inside a future building on the site, as any excavation necessary during construction may increase the release of soil gas which could result in high indoor concentrations. After construction it would probably be necessary to have indoor measurements taken in both cases to find out the actual level inside the building. 
+                </p>
+          <head>
+            <hi rend="bold"> 9. Prediction of Concentration </hi>
+          </head>
+          <p> One of the difficulties at present with the occurrence of radon gas is that no reliable method has been found for identifying the geographical areas most at risk. There is evidence linking high radon levels with underlying areas of uranium-bearing granite, shales, phosphate and certain sandstones, but this pattern is not entirely reliable which makes it difficult to prepare maps predicting areas of high concentrations based on geographical data. As an alternative, national surveys based on map grids are extremely expensive and lengthy exercises and result in only very general indications due to the variations in radon concentrations that may occur within small areas. 
+                </p>
+          <p> Measurements for individual buildings may be arranged by writing to either of the following - 
+                </p>
+          <p> Nuclear Energy Board Physics Department 
+                </p>
+          <p> 3 Clonskeagh Square University College Dublin 
+                </p>
+          <p> Clonskeagh Road Belfield 
+                </p>
+          <p> Dublin 14. Dublin 4. 
+                </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/126.00000</textSigle>
+            <title>Turlough</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>  Julian Reynolds, Catherine Coxon, David Hickie</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-031$A">
+          <head>
+            <hi rend="bold"> A view of the future </hi>
+          </head>
+          <p> The future of home entertainment is here with the launch of Philips CD-I. 
+            </p>
+          <p> The new CD-based home entertainment system combines CD quality audio with video, text, animation and graphics – all under the viewer 's interactive control. 
+            </p>
+          <p> Bright, entertaining and always informative, CD-I titles are suitable for all the family. Children and adults can actively learn from the television by interacting with programmes instead of sitting passively and just watching. 
+            </p>
+          <p> Parents will see the ease with which children – even the youngest – can play and learn from the titles using the colourful Roller Controller remote control, specially designed for small hands. 
+            </p>
+          <p> But it is not just for children. It is now possible to tour the Smithsonian museum, play the world 's greatest golf courses, tour the USA and teach yourself how to take 35mm photos – all without moving from your armchair! 
+            </p>
+          <p> There are four main categories – children 's music, games and special interest and currently retail from between <amp> pound sign </amp> 14.95 and <amp> pound sign </amp> 39.95. 
+            </p>
+          <p> The CD-I machine will also play ordinary audio CDs and photo CDs ( <sic> its </sic>
+            <corr> it 's </corr> now possible to put your snaps onto a <sic> comapct </sic>
+            <corr> compact </corr> disc and view them on television). 
+            </p>
+          <p> As with audio CD-audio, CD-I is a worldwide standard backed by the three largest electronics manufacturers – Philips, Sony and Matsushita (Panasonic and Technics) and supported by over 200 other hardware and software companies. 
+            </p>
+          <p> Similar in look and design to a standard CD-audio player, it is easily connected to any television. The titles are managed with a simple thumbstick controller. 
+            </p>
+          <p> There are currently around 45 titles available, with four to five new releases scheduled each month. 
+            </p>
+          <p> The CDI-205 is <amp> pound sign </amp> 499, including a <amp> pound sign </amp> 20 software voucher and is available from Gilmores Electrical, Lisburn Road, Belfast. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/126.00001</textSigle>
+            <title>Turlough</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>  Julian Reynolds, Catherine Coxon, David Hickie</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-031$B">
+          <head>
+            <hi rend="bold"> Now Joe Public is in the picture </hi>
+          </head>
+          <p> the new CX6 palm sized camcorder from Mitsubishi is packed with features that are designed to help rather than confuse customers. 
+            </p>
+          <p> Combining a unique "foolproof" operation with technical innovation (including the colour Truefinder which gives a full colour viewfinder with the sharpness until now only seen with monochrome) the CX series is poised to set new standards by including features that produce real customer benefits. 
+            </p>
+          <p> Launched in time for Christmas (over 250,000 customers will be buying camcorders this year) the CX6 is set to be a winner with both customers and dealers.
+            </p>
+          <p> The CX series has been improved as a result of extensive market research into what first time camcorder users want and need from a camera.
+            </p>
+          <p> The research looked at the type of situation in which the camcorder owner would be most likely to use the camera. 
+            </p>
+          <p> They found most buyers are looking for a camcorder that is easy to use, prevents the common mistakes and most important of all, produces really good results. 
+            </p>
+          <p> Consequently the CX6 has useful features which include: 
+            </p>
+          <p>
+            <amp> bullet point </amp> Auto shut off – so there should be no more shots of the ground or moving feet if the CX6 is left running accidentally. 
+            </p>
+          <p>
+            <amp> bullet point </amp> Different 'event' settings for parties, sunsets, golf, night illuminations, skiing, portraits and sports. These automatically compensate for difficult filming conditions that are present in these situations. 
+            </p>
+          <p>
+            <amp> bullet point </amp> The Colour Truefinder which gives the user a viewfinder that combines, for the first time, the sharpness of black and white with full, clearly defined colour. 
+            </p>
+          <p>
+            <amp> bullet point </amp> Easily accessible operating buttons. Making it easier for first time users to locate and use the controls. 
+            </p>
+          <p>
+            <amp> bullet point </amp> Quick start. The CX series have a recording start time of 0.3 seconds so there is less chance of missing any of the action. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/126.00002</textSigle>
+            <title>Turlough</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>  Julian Reynolds, Catherine Coxon, David Hickie</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-031$C">
+          <head>
+            <hi rend="bold"> Capturing Christmas </hi>
+          </head>
+          <p> CS SUPPLIERS have all the latest exciting electrical goods to give your loved ones this Christmas. 
+            </p>
+          <p>
+            <quote> "Obviously at this time of the year there is a lot of interest in camcorders,"</quote> said Raymond Mulholland at the Royal Avenue store. <quote> "People want to capture their youngsters on film at Christmas." </quote>
+          </p>
+          <p> The shop 's two main makes are JVC and Canon and cost approximately <amp> pound sign </amp> 500 to <amp> pound sign </amp> 600. 
+            </p>
+          <p> Palmcorders are also gaining popularity and at around <amp> pound sign </amp> 500 to <amp> pound sign </amp> 600 the benefit of these is their size. Easier to carry, they are the size of an ordinary still camera. 
+            </p>
+          <p> Overtaking the midi hi-fi and Mr Mulholland is predicting that sales of these this year will eclipse the midi. 
+            </p>
+          <p> The most popular buys are Pioneer, Aiwi, JVC and Sharp. Smaller than this again is the micro, at half the size it costs around <amp> pound sign </amp> 299. 
+            </p>
+          <p> If you are thinking about satellite this Christmas it is advisable to buy this month rather than leaving it too close to Christmas said Mr Mulholland. Sales are increasing but it is getting harder to get them he said. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/126.00003</textSigle>
+            <title>Turlough</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>  Julian Reynolds, Catherine Coxon, David Hickie</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-031$D">
+          <head>
+            <hi rend="bold"> Scanner one of the most advanced </hi>
+          </head>
+          <p> A new <amp> pound sign </amp> 500,000 CT Scanner, one of the most advanced in Northern Ireland, has been commissioned at Antrim Hospital. 
+            </p>
+          <p> It is part of an enlarged radiology department at the hospital, which will welcome its first patients this month. 
+            </p>
+          <p> For patients, the new department signals the end of transfers to Belfast and Londonderry, for some radiology services. 
+            </p>
+          <p> While there will continue to be X-ray services available at both the Moyle and Waveney sites, the more involved radiology services, such as CT scanning, will be centred at Antrim. 
+            </p>
+          <p> This enlarged department at Antrim will be staffed by six radiologists, led by Dr Colin Sinclair, from the Waveney who has also been appointed clinical director for the Radiology Directorate of the United Hospitals Group from April 1 1994. 
+            </p>
+          <p> Dr Sinclair said: <quote> "I am delighted that we will be able to provide an enhanced radiological service to all the Northern Board 's residents, especially with the introduction of a CT Scanner.</quote>
+          </p>
+          <p>
+            <quote>"This is a particularly useful piece of equipment, especially for showing up early signs of conditions such as cancer and lung disease, as well as being beneficial in the examination of those patients involved in traffic accidents where scanning can quickly show up damage to internals organs, particularly the brain and spinal cord." </quote>
+          </p>
+          <p> The Toshiba CT Scanner was supplied and installed by Medical Imaging (NI) Limited. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/126.00004</textSigle>
+            <title>Turlough</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>  Julian Reynolds, Catherine Coxon, David Hickie</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-031$E">
+          <head>
+            <hi rend="bold"> A twin track strategy for industrial growth </hi>
+          </head>
+          <p> The Engineering Employers Federation represents the interests of <amp> pound sign </amp> 5,000 companies in all sectors of the UK engineering industry – the backbone of the British manufacturing. 
+            </p>
+          <p> The industry is one of Northern Ireland 's largest exporters and employers. 
+            </p>
+          <p> The main themes of the EEF 's industrial strategy include: The importance of industry for recovery of the whole economy; the need for improved Government-industry dialogue and mutual understanding; education and training; investment, not only in industry but throughout the economy; and export support. 
+            </p>
+          <p> The strategy proposals address the three groups responsible for the UK 's industrial future; industry itself, Government, and to the financial institutions. But included messages for all politicians, policy advisers and those involved in education and training at all levels. 
+            </p>
+          <p> Unemployment is increasing by the day, businesses are closing at an alarming rate and confidence is at an all time low. The UK economy is in immediate trouble because its manufacturing base is too small. That is why there is a balance of trade deficit even while the country is deep in recession, warned the EEF The UK needs a twin-track strategy for economic growth, says director general Neil Johnson. 
+            </p>
+          <p> The two elements are immediate action to rectify the balance of payments and continuous long term development of technology and industry. 
+            </p>
+          <p> Engineering and manufacturing form the basis on which everybody 's prosperity depends. Most economic growth, even in service industries, originates in technological innovation from the manufacturing industry. 
+            </p>
+          <p> To maintain our standards of living we need to revive industrial innovation. To do that we need a vision of what is possible and how it can be achieved – an industrial strategy. 
+            </p>
+          <p> The chief purpose of an industrial strategy is to develop strategic thinking about national industrial affairs. It provides a common background of knowledge and understanding for individual decision makers. Industrial strategy is not about Government intervention, but government does have a crucial role in stimulating and <sic> co-ordinting </sic>
+            <corr> co-ordinating </corr> strategic thinking. Industrial strategy is an essential counterpart to macroeconomic policy. 
+            </p>
+          <p> The main items on the EEF 's agenda for an industrial strategy include:</p>
+          <p> Encourage internationally mobile investment to locate in and remain in the UK. 
+                </p>
+          <p> Government to provide effective, timely and internationally competitive export finance, local intelligence in export markets and political support for major projects. 
+                </p>
+          <p> Extend capital allowances for plant and machinery permanently to 100pc. 
+                </p>
+          <p> Develop strategic thinking in industry and government. 
+                </p>
+          <p> Industry to look for organic growth, not just acquisitions. 
+                </p>
+          <p> Government to take the lead in developing a vision of how industry and technology can be developed to national advantage. 
+                </p>
+          <p> Industry to provide ideas and information about how industry and technology can be developed to national advantage. 
+                </p>
+          <p> Shift emphasis from scientific research to technological development. 
+                </p>
+          <p> Government to maintain continuity of technology support through to full commercial exploitation. 
+                </p>
+          <p> Central and local government to act as a 'sophisticated and demanding buyer' to develop and stimulate strategic technologies and businesses. 
+                </p>
+          <p> Pursue the European Fighter Aircraft programme and make a speedy move to production Government to regulate telecommunications, energy and transport industries with a view to technological advance; and to competitiveness of their UK customer and supplier industries. 
+                </p>
+          <p> Government to assist UK industry to exploit the world market for environmental technology. 
+                </p>
+          <p> Government to consider the impact on industry of all policy decisions and draft legislation. 
+                </p>
+          <p> Government to establish effective conduits for industry-government communication, embracing all departments and at all levels. 
+                </p>
+          <p> Industry to ensure all employees ' performance and development needs are assessed regularly. 
+                </p>
+          <p> Industry to match world best practice in utilisation of employees ' skills and abilities. 
+                </p>
+          <p> Industry to increase efforts to show industry 's vital place in society and that it can offer careers that are both rewarding and of social importance. 
+                </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/126.00005</textSigle>
+            <title>Turlough</title>
+            <domain>PopNatSci</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>  Julian Reynolds, Catherine Coxon, David Hickie</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year"> 1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-031$F">
+          <head>
+            <hi rend="bold"> Women Too build on community need </hi>
+          </head>
+          <head> Report by Peter Hutcheon </head>
+          <p> The final designs for the new Windsor Women 's Centre in south Belfast were unveiled last week. 
+            </p>
+          <p> A team of students architects teamed up with local charity Women Too in a unique project aimed at providing the group with plans for a much-needed new home. 
+            </p>
+          <p> All last week, students attending the European Winterschool for architects at Queen 's University devoted time to the project. 
+            </p>
+          <p> And the results were revealed during a special ceremony at the group 's current base in Rockview Street, attended by south Belfast MP Martin Smyth. 
+            </p>
+          <p>
+            <quote> "Women Too has operated up to now with very few resources, but has managed to do an excellent job," </quote> said Mr Smyth. 
+            </p>
+          <p>
+            <quote> "To convert its operation to a purpose-built centre can only be a huge boost for this part of south Belfast.</quote>
+          </p>
+          <p>
+            <quote>"The group has shown that local people are prepared to do a lot of work to improve their area and have shown the way to people in the rest of the city." </quote>
+          </p>
+          <p> Women Too is a community activated, woman-driven organisation, helping regenerate the Blackstaff ward in inner-city south Belfast. 
+            </p>
+          <head>
+            <hi rend="bold"> Derelict </hi>
+          </head>
+          <p> At its small premises in Rockview Street it provides education and training for women of all ages, creche facilities and an advice centre. 
+            </p>
+          <p> The new centre will be located at Broadway in the heart of the Blackstaff ward in the Village area, on the site of five derelict houses. 
+            </p>
+          <p> The <amp> pound sign </amp> 250,000 development will have five classrooms, a purpose-build computer centre, a creche with an adjoining sleeping room and areas for private advice workshops. 
+            </p>
+          <p> Joy Poots, joint co-ordinator of Women Too, said they are delighted with the plans and the model for the new centre. 
+            </p>
+          <p>
+            <quote> "Because we worked closely with the architects last week we were able to say exactly what our needs were able to come up with feasible designs," </quote> she explained. 
+            </p>
+          <p>
+            <quote> "The project came about when the Belfast Action Tem was asked to recommend a project for the annual winter school and it suggested us." </quote>
+          </p>
+          <p> Thursday 's presentation was made by Sheelagh McManus of Matrix and Mary Kelly of Glasgow Housing Co-operatives, who helped to organise the winter school 
+            </p>
+          <head>
+            <hi rend="bold"> Identified </hi>
+          </head>
+          <p> Local architect Susan Crowther was also involved in the planning. She has worked closely with Women Too since last year and will continue to liaise with the members through the building of the new centre. 
+                </p>
+          <p> Women Too opened Windsor Women 's Centre in 1990, after the Blackstaff Community Health Profile report clearly identified a need for such a facility in the area. 
+                </p>
+          <p> As a result of the findings the Windsor Steering Group was established, made up of local people, and Women Too was an off-shoot of that committee. The two groups still work closely together. 
+                </p>
+          <p> Majella McCloskey, who worked on the health profile, believes the new centre can only serve to help the needs of the Village. 
+                </p>
+          <p>
+            <quote> "We have worked closely with Women Too since the group started three years ago," </quote> she said. 
+                </p>
+          <p>
+            <quote> "The area is under threat from many problems such as poor housing, poverty, unemployment and health.</quote>
+          </p>
+          <p>
+            <quote>"Having a new centre at Broadway in the heart of the community will be a great help." </quote>
+          </p>
+          <p> The Rockview Street centre is a two-up, two-down house which has become too cramped for the range of services Women Too wants to offer. 
+                </p>
+          <p> Around 40 women currently use the centre on a regular basis and the creche has to cater for up to 30 children. 
+                </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/128.00000</textSigle>
+            <title>Land of Milk and Honey</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Bríd Mahon</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1991</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-006$A">
+          <head> The Water of Life </head>
+          <p> Close to Banbridge in Co Down lies the little village of Loughbrickland. About half a mile to the south-east, sheltered by low hills and trees, is Loch Bricleann or Bricriu 's Lake, which gives the village its name. The setting takes us back almost two thousand years to one of the most famous stories in the Ulster cycle. It concerns Bricriu, a wealthy and malicious chieftain who decided to give a feast and for that purpose built a house big enough to accommodate the Ulster heroes and their wives. It was truly magnificent, a branch-red dún, with nine rooms overlaid with gold, modelled on the palace at Eamhan Mhaca. The feast was equally sumptuous, consisting of beef broth, roast boar, salmon, honey cakes and many other dishes; to drink the guests had the finest of ale, the choicest of mead and the rarest of wines. Bricriu promised the <quote> "hero 's portion" </quote> to the Red Branch knight who would prove himself the bravest of the company, a challenge which naturally led first to bitter arguments and then to bitter blows. Their host had planned for this. Not for nothing was he named Bricriu Poison-Tongue. 
+            </p>
+          <p> In another story, <hi rend="italic"> The Wooing of Étaín, </hi> which was written down at Clonmacnoise around the year 1000, from oral sources, we read how the High King Eochaidh made a great feast at Tara at which mead, fine wines and barrels of ale were served. These two early tales are interesting because they tell us of the kind of food and drink served at princely banquets. Today royal Tara stands no more. All that remains of what was once the noblest residence in Ireland is a windswept hill, where archaeologists trace the outlines of the palace, and folk tales keep alive the memory of the mead banqueting-hall, where according to legend the heroes quaffed their favourite brew. 
+            </p>
+          <p> Mead was long a favourite drink, said to be both potent and delicious. It was made from honey, clear sparkling water and aromatic plants. Bragget, made by fermenting ale and honey together, was also much enjoyed for it is frequently mentioned in medieval records. Bees were kept in very great numbers, and to have a surplus of honey for mead-making was highly desirable; districts that produced mead in quantity were lauded by the poets. St Brigid, that redoubtable woman who knew how to influence prelates and princes, is said to have given the King of Leinster a cup of mead to drink when he came to visit her convent. It was of unsurpassing quality and no doubt very potent to boot. Probably as a result of her hospitality she was given a tract of land or some gift she needed for her work amongst the sick and needy. She was noted for the excellence of her kitchen, and had the reputation of brewing the best ale in Ireland. But she was not the only one of the early saints who kept a good cask or two. St Patrick had his favourite brewer who travelled Ireland with him on his missionary work. 
+            </p>
+          <p> Anyone who wished to do so was free to brew his own ale, but the Brehon laws laid down regulations for the sale of ale and for the proper running of ale-houses. Early monastic settlements were sizeable, including, as they did, not only the refectory, kitchens and dormitories for the monks but workshops, bakeries, and accommodation to house lay workers and their families, visiting penitents, students, and indeed anyone who might seek shelter. Regulations which governed everything from the hour of rising of the community to the hour when the weary monk might retire to his cell gave it as a rule of thumb that on days of high feasting laymen and clerics should get equal quantities of food, but that the tonsured monk should get only half as much ale to drink as his brother in the laity. 
+            </p>
+          <p> Much of the early ale was made from malted grain – oats, wheat or barley – together with spring water and honey. Before the introduction of hops in the 16th century, beer, like ale, made with a simple infusion of fermented malt, might be flavoured with aromatic and astringent plants. Oak bark is said to have been used for this purpose, as well as buck beans found in the neighbourhood of certain raths. It was not until around 1780 that beer began to be produced on a commercial scale by small breweries, made from a mixture of malt, grain, water, sugar, yeast and hops. In earlier times the words <hi rend="italic"> ale </hi> and <hi rend="italic"> beer </hi> were often synonymous. The Irish also drank a cider called <hi rend="italic"> nenadmin </hi> made from whortleberries or blackberries. 
+            </p>
+          <p> Perhaps the drink best remembered in folklore is the famous heather ale, a legacy of the years when the long-prowed Viking ships raided Irish waters, and a simple monk whose name we shall never know wrote on the margin of the manuscript he was illustrating one stormy winter night:
+                <p>
+              <quote> Fierce and wile is the wind tonight; It turns the tresses of the sea to white; On such a night as this I take my ease; Fierce Northmen only course the quiet seas. </quote>
+            </p>
+            <p> The story goes that the Vikings or Danes, as they are traditionally known, were superb brewers of beer, but their heather ale was unsurpassed; the recipe, a carefully guarded secret, was handed down from father to son. After the Battle of Clontarf in 1014, when the power of the Danes in Ireland was finally broken and the foreigners driven into the sea, only one family escaped. They were taken captive by an Irish chieftain near the Cliffs of Moher in Co Clare and were offered their lives in exchange for the secret of the brew. <quote> "I would be ashamed to tell you before my son," </quote> the fierce old Dane said, and watched unmoved as the young man was put to the sword. He then led his captor to the edge of the cliff and whispered long and earnestly in the other 's ear. 
+                </p>
+            <p>
+              <quote> "And is that all there is to it? The special herbs and the manner of brewing?" <quote> The chieftain hugged the old man in delight. </quote> "You have bought your life; you are free to go." </quote>
+            </p>
+            <p> But at this the Dane tightened his grip. <quote> "Had my son lived he might have bartered the secret for his life, but now you and I alone know how the heather ale is made and we shall take that knowledge with us to our doom." </quote> And with those words the Dane jumped over the cliff, taking the Irish chieftain with him to a watery grave far below. And so was lost for ever the secret of the heather ale. 
+                </p>
+            <p> We may safely assume that by the 12th century there were many places in Ireland which enjoyed the reputation of making excellent ales and many a man who had a good palate for a fine wine. Even in early times there was considerable trade with the Continent. Furs and hides were exported to Gaul, and back came cargoes of wine, so that amongst wealthy merchants and princelings it was a well-known drink. 
+                </p>
+            <p> One of the most enigmatic anecdotes of the year AD 535 tells of dark passions and a woman betrayed. It appears that the palace of Cletty was set on fire by a certain beautiful lady, who had been scorned by the king, while the members of the court were at table. <quote> "To escape the flames," </quote> the record says, <quote> "the king plunged into a vat of wine but was drowned." </quote> And so the lady was avenged; but there the record ends, and we hall never know the <sic> fully </sic>
+              <corr> full </corr> story. Was there a still more beautiful rival for the king 's heart involved, or a jealous wife waiting in the wings, or even a distracted husband who had refused to play cuckold any longer and was bent on revenge? What subsequently happened the dark lady? Did she enter a nunnery? Placate her husband as so many women before and since have done? Did she lie awake at night weeping over her dead love or did she put the past behind her? One thing is certain, human nature never changes, and crimes of passion happen in every stratum of society and in every age.
+                </p>
+            <p> Giraldue Cambrensis, or Gerald the Welshman, who visited Ireland in the 12th century and who wrote what is probably the first travel book about the island, commented on the abundance of wine imported into the country from Poitou, France. A story is told of how in the 13th century a Munster chieftain, one Amhlaoibh Ó hEidirsceoil was given his nickname. One day, as a young boy, he was down at the harbour, watching the ships and dreaming of far distant lands as young boys do, when he was abducted by a rival chieftain and handed over to the crew of a wine ship from Gascony as a pledge of payment for a cargo. He was taken to France and put to work in the vineyards, thereby giving credence to the old belief that fruit grew without blemish if the vines were tended by those of noble blood. Later the youth was brought back to Ireland and ever afterwards bore the nickname <quote> "the Gascon." </quote>
+            </p>
+            <p> Wine and ale flowed freely at great feasts given by princes and chieftains. A scribe named Muirch writing in the 7th century describes how St Patrick came to the palace of King Laoghaire at Tara on Easter Sunday in the year of Our Lord 433. There he found kings, princes and druids feasting and drinking wine. From what we know of Patrick, he probably joined the company in the spirit of good will, before setting about converting the pagans. This custom seems not to have changed down the years. A 13th-century poem speaks of the bard going from <quote> "one feast of purple wine to another." </quote>
+            </p>
+            <p> However, not all drink consumed was come by honestly. Not infrequently the Irish levied "blacks rents" on the Pale of Dublin and surrounding districts. In 1444 Eoghan O'Neill, Lord of Tyrone, plundered the town of Dundalk, and demanded sixty marks and two tons of wine in return for not destroying the town by fire – a demand that was quickly met by the frightened townsfolk.
+                </p>
+            <p> By the 16th century cheap, low-quality wine had become more readily available, especially around coastal waters where Spanish and English merchant seamen traded wine, beer and bales of silk for hides, fish, salt and meat. Sometimes it was a case, not of honest trading but of treacherous intents. We read of English merchant ships arriving in ports with cargoes of fine wines and encouraging Irish chieftains to imbibe, not wisely but too well, while their followers, left leaderless were rounded by the enemy army – much the same technique as was employed by Elizabeth 's minions when the captain of the decoy ship at Lough Swilly invited the young Aodh Ruadh Ó Dónaill aboard at Christmas 1587, made him drunk on wine and took him in chains to Dublin Castle. 
+                </p>
+            <p> Fynes Moryson, that inveterate traveller and historian who came to Ireland as Lord Mountjoy 's secretary in 1600 and remained with Mountjoy all through the long and bitter campaign which ended with the defeat of the great Hugh O'Neill, kept a record of his time here, entitled <hi rend="italic"> The Commonwealth of Ireland </hi>. He wrote that when the common Irish have money to spend they like to imbibe freely:
+                    </p>
+            <quote> Whenever they come to a market town to sell a cow or a horse they never return home until they have drunk the price in Spanish wine, which they call the "King of Spain 's daughter." </quote>
+          </p>
+          <p> A brisk trade in smuggling wine and fine brandy along the western seaboard and around the coast of Kerry Island lasted until well into the 19th century. After the defeat of Patrick Sarsfield and the signing of the Treaty of Limerick in 1691, a treaty which was broken ere the ink was dry, many of the old Irish aristocracy with their retainers fled the country for ever. Following them went the soldiers who had fought with Sarsfield, each man with a price on his head. The ships that took the Wild Geese as the members of the Irish Brigade came to be known on the battlefields of Europe, often engaged in a two-way smuggling exercise, running in wine and spiriting out wanted men. 
+                    </p>
+          <p> It is no exaggeration to say that since the late Middle Ages when the art of distilling became known in these parts, Irish whiskey has always been rated the best there is. Time and again writers and travellers to our shores have commented on the excellence of our <hi rend="italic"> aqua vitae, </hi> or to give it the old Irish title, <hi rend="italic"> uisce beatha, </hi> meaning "water of life", which was indeed how many people regarded it. 
+                    </p>
+          <p> In folk tales a popular motif is where the hero is put under <hi rend="italic"> geasa </hi> or bonds to undertake a journey to the Well and the World 's End, or some other such mythical place, in search of the water of life. His journey is fraught with dangers, he performs incredible feats of valour, is often helped by fabulous animals or magical old men or women and finally succeeds in his quest and is rewarded with the hand of a princess in marriage. In all such tales we are told that the "water of life" cures all ills, but more than that, it restores youth, vigour and beauty to the old, the decrepit and the ugly. 
+                    </p>
+          <p> It is perhaps no surprise to learn that our early whiskey was indeed used to cure illness and to invigorate the weak and low-spirited. It is not known for certain when the first Irish whiskey was distilled, but we do know that from the 15th century onwards it supplemented wine and beer. 
+                    </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/129.00000</textSigle>
+            <title>Books Ireland</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Bruce Stewart</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-002$A">
+          <head> Lyke allwaye to contynue? </head>
+          <head>
+            <hi rend="bold"> Bruce Stewart </hi>
+          </head>
+          <p>
+            <hi rend="bold"> JONATHAN BARDON'S </hi>
+            <hi rend="italic"> History of Ulster </hi> serves as a researcher 's vade mecum, and a good read of a very high order. This latter trait, in a comprehensive digest of the social, cultural, and political course of affairs in north-east Ireland from the earliest times, is a notable achievement, even at the expense of handing over the narration of certain events almost entirely to other commentators. Of course there can be no doubt that the book has an ideological agenda, but it remains gracefully indulgent towards alternative readings of the past at variance with the brand of liberal unionism that pervasively informs its chapters. Taking its ground on the political fact of independent (though not sovereign) stateship in Northern Ireland since 1920, and devoting almost exactly half of its 830 pages to the record of that state in various arenas, it reads in places like a vindication of partition. In other places, however, it is a stern indictment of the error of excluding Northern Catholics from civil rights, especially in matters of housing and employment but also in regard to education and political participation — though the damage appears to have been largely self-inflicted by the hierarchy in these latter areas. 
+            </p>
+          <p> The final impact of this book is to demonstrate that there has been, in practical fact, a separate historical process in Ulster, reflecting the particular m/elange of national and religious elements ensconced there since the plantation period. And since the so-called Peace Process in which the leaderships of Éire Ireland, the United Kingdom and the majority parties in Northern Ireland are now engaged seems to presuppose a recognition of the validity of this premises on all sides, there can hardly be much to criticise about its operations in a history textbook. It is very likely, moreover, that the official participants are all going to school with Headmaster Bardon as of now, and it would therefore be impertinent to regard his <hi rend="italic"> History </hi> as just another tome about 'the Province'. If J. H. Whyte 's last published book, Interpreting Northern Ireland (1990) remains the indispensable guide to arguments and practices among politicians and worker folks on either side of the chief divisions of Ulster society, Bardon 's is the text that draws all such positions into a single narrative. Virtually everything else written about Ulster is more or less partis pris compared with it, and nothing else is really half as witty — though Professor Lee 's mordant account of economic failure in the southern state provides occasion for endlessly sardonic chortles — not all intentional, in view of his recurrent anxiety fits about the missing 'elites' of liberated Ireland. 
+            </p>
+          <p> Bardon 's <hi rend="italic"> History </hi> offers something like the definitive script of liberal unionist Ulster in our generation. It provides the schedule of information, understandings, even levities, by which intelligent Ulster men and women will be assaying their historical experience for quite some time to come. Ultra-unionists (still more ultra-Protestants) will not find much comfort in it; but liberal unionists will enjoy the fun of seeing Nationalists at their most callow and other Unionists at their most intellectually fossilised. With impressive assurance Bardon tells the story of an Irish region that constitutes itself as a separate historical zone not because of its claim to geographical distinctiveness — give or take a drumlin or two it has none — but because it has provided the setting for an apparently endless series of socio-political disturbances which no Land War or subsequent freedom-fighting shenanigans could resolve. 
+            </p>
+          <p> The book kicks off in the approved Evansite fashion by insisting on the long-term interaction of various waves of natives and settlers in Ulster from neolithic times down to the present moment — or down, at least, to the American invasion which Éamon de Valera officially protested in 1941. All of this is fascinating to the present reviewer who lives some hundred yards from Mountsandel, County Derry, where the Cruitin first feasted on boar and salmon on a steep escarpment above the River Bann. What James Joyce — the unacknowledged master of Irish pluralism — calls <quote> 'miscegenations upon miscegenation' </quote> ensued through several millennia, and though a more or less uniform Gaelic culture emerged first and lasted longest in Ulster, the question is posed: why should the migration and emigration of Celts from parts of Scotland (together with their British neighbours) not be regarded as an additional ingredient to the brew rather than an (in)alienable foreign element? And — if that sounds like an own-goal — why should the heterogeneous Gaelic Irish consider themselves radically different from other inhabitants of the British Isles when <quote> "the genepool of Irish population probably was set by the Stone Age" </quote> ? 
+            </p>
+          <p> In such a view, <quote> " Celtic civilisation was not the creation of a separate race but a language and a way of life spread from one people to another." </quote> The tendency of this argument is patently inimical to the pieties of Irish-Ireland history and its notion of a continuous, undivided Irish nation of Gaelic racial origin; nor is it friendly to an imperialist whitewashing of the mixed legacies of a country made up of closely interwoven ethnic and cultural components. At the same time, this pleasant smorgasbord of physical and cultural aggregates does not by any means abolish the underlying problems presented by living Irish history, and kosher Gaelic Catholic nationalism is just not going to go away at the behest of centralised economic and political rationalism streaming outwards along ley-lines <sic> focussed </sic>
+            <corr> focused </corr> in Whitehall and Westminster. 
+            </p>
+          <p> There is more than a trace of special pleading in the way Bardon orchestrates selected passages from the Irish annals, from the journals of shipwrecked Spanish Armadeers, dejected Gaelic bards, bemused English administrators, and Irish nationalist historians themselves, in order to portray a politically dysfunctional ancient Irish community in which tribal wars and man-made famines — punctuated by bouts of cannibalism — prevented the passing of the nation over the threshold of modern statehood. It all reads a little like David Hume 's derogatory chapter in the <hi rend="italic"> History of England </hi> , and one almost expects to see Charles O'Connor and Sylvester O'Halloran rising from their graves to dispute such calumnies about their people. But this kind of erudite Gael-bashing is little more than a curtainraiser, and it may even be that the author has struck the very note that will laugh the nationalist historians out of their own earnestness about the glory of God and the honour of Ireland which has been the touchstone of Gaelic historiography since Four Masters. 
+            </p>
+          <p> Indeed, they too are featured here, or rather their lament at the ill-advised Flight of the Earls whose <quote> 'undutifulle departure' </quote> — in the words of an English administrator — provided the excuse for the plantation of Ulster under James I. Such inclusions make for a useful primer in all-Irish history also, and only occasionally does the writing tilt towards undue insistence, as when we hear that Red Hugh O'Donnell <quote> 'died of illness' </quote> — as Bardon puts it — in Simancas. O'Donnell was assassinated by poison at the hands of an Anglo-Irishman called Burke, or so the DNB and Standish O'Grady firmly believed and Irish historians after them. It hardly seems fair to airbrush the Ninja quotient out of Anglo-Irish history in order to show that the Gaelic Ireland was an incorrigibly ungovernable society which finally committed suicide out of aristocratic pique when the local rent-roll diminished below the level that the tyrannical native princes ' <hi rend="italic"> amour proper </hi> could tolerate. 
+            </p>
+          <p> In the eighteenth-century chapters we hear much about the failure of nerve of the Protestant Ascendancy in the face of Catholic Emancipation, and of course the stupid exclusion of Presbyterians from citizenship, with obvious consequences in 1798. We also hear the stentorian voice of Burke chanting his marvellous description of the penal laws, a <quote> "machine of elaborate contrivance as well fitted for the oppression, impoverishment, and degradation of a people, and the debasement in them of human nature itself, as ever proceeded from the perverted ingenuity of Man." </quote> We see the birth of the Orange Order, with its early pogrom-type attacks on rural Catholics in Tyrone-Fermanagh. We follow the struggles of the emancipationists, including notably the inept descent of Daniel O'Connell on County Down, where he was met and challenged by Henry Cooke, DD, the man who forged the union that really counts — that between the Presbyterian Synod and the Church of Ireland. By 1857 an interchange of religious and political opinions in Belfast <quote> 'on the basis of basalt' </quote> was a regular feature of the riotous scene. This sickening aspect of social and political history in Ulster is traced equitably down the generations, though much — if not most — energy from mid-way in the book goes into the economic narrative of Ulster which is this historian 's particular forte (and this includes the narrative of the war-time air raids on the tragically overcrowded ghetto-slums). All in all, linen, cotton and steel spelt the momentary triumph of the Ulster entrepreneurial class but, in various fatal combinations with religion and tuberculosis, they also wove the cerements of Ulster working class — that unfortunate and profoundly self-destructive class of Irishmen and women. 
+            </p>
+          <p> A punctilious account of each tawdry phase of sectarian antagonism in Ulster — and in Ireland — since the Act of Union is perhaps the salient feature of this book. It is all done with a high impartiality that makes it clear that Ulster Catholics and Protestants have always reacted to one another in such a way as to join forces only in a downward spiral. Whether reporting the rattle of muskets at the Diamond or the various crawthumping revivalisms of both factions, the tale is told with a sardonic relish for detail that looks forward to good documentary treatment. If so, a leading figure will be Ian Paisley — arguably the premium mobile of the present troubles — who emerges in the chapters that concern him as a barbarian on a footing with the very worst in Ireland 's saga of self-righteous bigots. The moment when, immediately after the death of John XXIII, he assured his congregation that the scarlet prelate was already roasting in Hell perfectly illustrates the tragicomedy of antediluvian religiosity and its hateful consequences. Equally comic, if not equally tragic, is the prospect of the Catholic hierarchy repudiating the benefits of the Welfare State on behalf of its charges for fear of Creeping Communism. It is to Archbishop Cardinal McRory that the credit goes for broadcasting in a Paschal sermon the view that the Church of Ireland (let alone Ian Paisley) is <quote> 'not even a part of the Church of Christ'. </quote>
+          </p>
+          <p> The saga of Home Rule, the Ulster Covenant, the Rising, and the establishment of northern and southern statelets is powerfully narrated, with a number of amusing stories indicating the degree to which partition was not only grudgingly accepted but actively engineered by Irishmen of both persuasions in spite of knee-jerk protestations to the contrary. One such protest, cited from James Craig 's journal following his visit to de Valera in Dublin, amusingly encapsulates the element of fantasy-life in the Irish leader 's mental make-up that made it possible for Craig to posture as a modern democrat of some urbanity faced with a political troglodyte. 
+            </p>
+          <p>
+            <quote> After half an hour he reached the era of Brian Boru. After another half hour he had and advanced to the period of some king a century or two later. By this time I was getting tired. Fortunately, a fine Kerry Blue entered the room . . . </quote>
+          </p>
+          <p> Bardon digs particularly deep in his portrayal of Carson (deeper than A. T. Q. Stewart in the Macmillan series), and if Kevin Myers is still in listening-distance, he may note the Dublin Unionist was not the law-abiding pacificist and crypto-socialist that <hi rend="italic"> Irishman 's Diary </hi> has been tempted to suppose: <quote> "<quote> 'Crawford,' </quote> he said decisively to the organiser of the gun-running, <quote> 'I 'll see you through this business if I have to go to prison for it.' </quote> " </quote>
+          </p>
+          <p> The one nationalist who shines in Bardon 's narrative — other than many named and unnamed figures who availed of the 1947 Education Act to become administrators, civil servants, entrepreneurs, professionals and poets — is Gerry Fitt, who first vocally insisted on the necessity of recognising the roots of Unionism in a popular way of feeling and sought, accordingly, a political solution to the inter-community strife in the context of the Northern Ireland state. Indeed, Bardon reiterates the Fittite precept more than once in the form of a reproof to leaders north and south. <quote> "Southern politicians assumed that leaders in the North were responsible for dividing the people there but the roots of sectarianism ran deep in Northern Ireland society" </quote>; so much for the 'Orange Card' an the British conspiracy theory. He continues, <quote> "while they [the Ulster Protestant leaders] can be condemned for failing to give a positive lead in promoting reconciliation, such men were merely reflecting views very widely held." </quote> None of this of course exonerates those governors of Northern Ireland who advertised and supported principles of outright political prejudice in the government of the Northern state, such as — notoriously — Basil Brooke. Bardon comments: <quote> "No doubt a sizeable proportion of Catholics would never have been reconciled to the political status quo but the tragedy was that Brookeborough seemed incapable of recognising the benefits of reconciling any of the minority to the regime." </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/130.00000</textSigle>
+            <title>History Ireland</title>
+            <domain>LerHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Dermot Keogh</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2A-010$A">
+          <head>
+            <hi rend="bold"> Legitimacy of the state reinforced </hi>
+          </head>
+          <p> Irish Catholicism in the 1920s sought, as one of its major objectives, to reinforce the legitimacy of the new state. The post-civil war political climate of Saorstát Eireann suited and reassured members of the Catholic hierarchy. They had lived through the dangers of the war of independence period between 1919 and 1921, witnessing the breakdown of law and order. A number of the hierarchy had even found their very lives threatened by elements in the British forces. The killing of three priests demonstrated that the clergy were not immune from the official government policy of reprisals during the 'Troubles'. Before the signing of the Truce on 9 July 1921, the majority of the Catholic hierarchy had shifted to a political position of tacit support for the constitutional wing of Sinn Féin. They supported the opening of peace talks with the British government and welcomed the signing of the Treaty on 6 December 1921. With the outbreak of civil war in 1922, the hierarchy sided with the Saorstát and roundly condemned the anti-Treatyites in a joint pastoral issued in October 1922. William T. Cosgrave was the President of the Executive Council between 1922 and 1932; he was a devout Catholic and a close friend of the Archbishop of Dublin, Edward Byrne. During the war of independence, he had put forward the idea of establishing a 'theological senate' – an upper house for Dáil Éireann in which the Catholic bishops would sit to adjudicate on the orthodoxy of all legislation. But he did not seek to implement that idea when he took office in August 1922. In his personal life he was genuinely devout. He was given special permission from the Holy See to have an oratory built in his home where Mass could be celebrated. The Vice-President and Minister for Home Affairs, Kevin O'Higgins, was an ex-seminarian who had studied for the priesthood in Maynooth. The Minister for Finance, Ernest Blythe, was the only non-Catholic. However, it is important not to overstate this point. While the Cumann na nGaedheal ministers were quite distinctive in their political approaches – and the tensions between personalities were at times very pronounced – there was a tendency to reach consensus easily on church-state questions. The main objective of Cumann na nGaedheal was to strengthen the popular legitimacy of the new Irish state. 
+            </p>
+          <p> Even if there is evidence that the bishops supported Cosgrave and his party in government, the hierarchy was not Cumann na nGaedheal at prayer. John Dignan of Clonfert was the first bishop to break ranks and publicly identify with de Valera 's anti-Treatyites. As his episcopal ordination in June 1924, he predicted that <quote> 'the Republican Party is certain to return to power in a short time', </quote> a prediction realised in 1932. In the meantime, church and state worked in close harmony with little evidence of conflict. 
+            </p>
+          <head>
+            <hi rend="bold"> Back to basics </hi>
+          </head>
+          <p> There was general political approval for the hierarchy 's censorious attitude towards alleged sexual immorality in the Saorstát. The bishops frowned upon foreign fashion and modern dancing fearing that the moral laxity associated with Britain and the continent might reach Irish shores through the medium of cinema, radio and the British yellow press. Archbishop Harty of Cashel said on 25 April 1926 that the <quote> 'quantity of such horrible papers circulating in the country was simply appalling'. </quote> On 9 May 1926 Archbishop Gilmartin of Tuam condemned foreign dances, indecent dress, company-keeping and bad books. He spoke of a <quote> 'craze for pleasure – unlawful pleasure'. </quote> He warned that family ties were weakened and in other countries where there were facilities for divorce <quote> 'the family hardly existed'. </quote> The hierarchy believed that native dancing had <sic> salutory </sic>
+            <corr> salutary </corr> powers: <quote> 'Irish dances do not make degenerates'. </quote> Sex was, therefore, a matter of considerable concern to church and state alike in the 1920s. 
+            </p>
+          <p> However, legislative initiatives on censorship, the curtailing of drinking hours and illegitimacy were not taken under pressure from the bishops. The Censorship of Films Act was passed in 1923; the Intoxicating Liquor Act was passed in 1924 and amended in 1927; the Censorship of Publications Act became law in 1929 and the Legitimacy Act in 1930. Bishops and politicians shared a conservative Catholic outlook which was also shared, in the main, by the leaders and members of other churches. The government sought the advice of the hierarchy and was usually decisively influenced either by the Archbishop of Dublin or by the bishops as body. 
+            </p>
+          <head>
+            <hi rend="bold"> Divorce </hi>
+          </head>
+          <p> The question of divorce revealed a pattern of relations between church and state which was to repeat itself in the 1930s. Before 1922 a divorce was obtained by private bill in parliament. Soon after independence, three private divorce bills were introduced. The Attorney General, Hugh Kennedy, sought a decision from the Executive Council as to whether legislation would be promoted to set up the necessary procedures. Cosgrave sought the advice of Archbishop Byrne and the bishops as a body. The hierarchy meeting in October 1923 stated <quote> 'that it would be altogether unworthy of an Irish legislative body to sanction the concession of such divorces, no matter who the petitioners may be'. </quote> Cosgrave took note and standing orders were suspended to prevent such a bill being introduced into the Dáil. Despite spirited opposition, the measure was upheld. Professor William Magennis summed up the contradictions in the debate: <quote> 'You cannot be a good Catholic if you allow divorce even between Protestants'. </quote> There the matter rested until the introduction of Bunreacht na Éireann in 1937. 
+            </p>
+          <head>
+            <hi rend="bold"> Censorship </hi>
+          </head>
+          <p> Since the foundation of the state, the Catholic Truth Society and a number of prominent clergymen had campaigned for stricter censorship laws. The Minister for Home Affairs, Kevin O'Higgins, set up a Committee of Enquiry on Evil Literature 1926. A Censorship Bill was introduced in summer 1928. Leading Irish literary figures, William Butler Yeats, George Bernard Shaw and George Russell all condemned the legislation. But their collective wrath and reputation were not sufficient to prevent the passage of the bill and the first censorship board was established on 13 February 1930. The committee had the power to prohibit the sale and distribution of 'indecent or obscene' books. The publishing, selling or distribution of literature advocating birth-control was also deemed an offence under the Act. 
+            </p>
+          <p> Theatre in the Saorstát in the 1920s enjoyed freedom from censorship. However, when the Abbey Theatre performed Sean O'Casey 's <hi rend="italic"> The Plough and the Stars, </hi> there were vocal protests against the bringing of the tricolour into a public house and to the presence there of a prostitute, Rosie Redmond. The play ran for two weeks but with the lights on in the theatre and with gardaí lining the passages at the sides of the pit. Conservatism remained a feature of most aspects of the Irish administrative, cultural and social life in the 1920s. The emphasis was on the need for continuity and conformity. 
+            </p>
+          <head>
+            <hi rend="bold"> Education </hi>
+          </head>
+          <p> Economic stringency, the close relationship of the government with the Roman Catholic Church and a state philosophy of minimal interference have been identified as three constraining factors on the development of educational reform in the 1920s, where the main emphasis was on curriculum rather than structural change. The Minister for Finance, Ernest Blythe, cut national teachers salaries by 10 per cent in 1923. This reflected the poverty of the country at the time. However, despite the limited state resources during their respective tenures, the two ministers for education Eoin MacNeill (1923-1925) and John Marcus O'Sullivan (1926-1932) were responsible for significant administrative initiatives. The department was created and its procedures established; systematic investigations were launched into various issues; a new secondary examination and curricular structure was devised; a primary certificate was introduced; a network of preparatory colleges was established; and legislation was successfully promoted on school attendance, the universities and vocational education. The Cumann na nGaedheal government established a model which the education system followed with minor modifications for almost forty years. The Catholic church played the central role in the development of a denominational educational system. The Church of Ireland was also provided with separate primary and secondary school systems and separate teacher-training facilities. The Jewish community operated schools in Dublin. The educational system was based on the religious pillars in the state. Through their involvement in education, the churches played a major role in the building of national character and identity. 
+            </p>
+          <head>
+            <hi rend="bold"> Eamon de Valera: Catholic nationalist </hi>
+          </head>
+          <p> Eamon de Valera, an abstentionist in Irish constitutional politics since the acceptance of the Treaty in 1922, founded Fianna Fáil in 1926 and broke with his more intransigent Sinn Fein colleagues. He entered the Dáil in 1927 and led the opposition until Fianna Fáil was returned to power in 1932. De Valera was a Catholic nationalist. Temporarily out of favour with the Irish hierarchy since 1922, he had managed to restore his credibility among the younger Irish clergy by the late 1920s. Although he had never been perceived as a 'gunman' by the bishops, de Valera was held responsible for his poor judgement which had contributed to the outbreak of civil war in 1922. But collective episcopal hostility had waned towards 'the chief' by the time Fianna Fáil entered the Dáil. 
+            </p>
+          <p> There was, however, a rump of the hierarchy who neither forgave nor forgot. But members of the hierarchy were, in the main, pragmatists. De Valera was somebody with whom they might soon have to work in government. The arrival of Fianna Fáil in Dáil /Eireann placed Cumann na nGaedheal under considerable political strain. Taking stock of its situation in 1929, it made a successful attempt to establish diplomatic relations with the Holy See that year. Paradoxically, this complicated relations between the hierarchy and the government. The bishops were very unhappy at the idea of having a nuncio resident in Dublin. Firstly, they feared that he would be running with tales to Rome all-too-frequently. Secondly, they believed that the nuncio might interfere with the process of episcopal appointments. Thirdly, they believed that British influence would be extended over the Irish church as a consequence of the perceived subservience of the Holy See towards the Court of St James. 
+            </p>
+          <head>
+            <hi rend="bold"> The Dunbar-Harrison case </hi>
+          </head>
+          <p> The government survived that storm. But the nuncio crisis of 1929 had given Fianna Fáil an opportunity to demonstrate that Eamon de Valera was more sensitive to the feelings of the hierarchy on that matter than was Cumann na nGaedheal. The vulnerable position of the government also made it amenable to episcopal representations when the Legitimacy Act (1930) was being drafted. That legislation was strongly influenced by canon law. The Vocational Education Act (1930) was also drafted with a view to placating the hierarchy. However, all Cosgrave 's careful efforts not to alienate Protestant opinion was jeopardised by the Letitia Dunbar-Harrison case in 1930. After winning an open competition she had been appointed to the post of librarian for Mayo. She was a Protestant and an honours graduate of Trinity College, Dublin. When the local library committee refused to give approval to the appointment – a stand supported by the local county council – the government stood by the decision of the Local Appointments Commission, disbanded the council and kept Dunbar-Harrison at her post. Local clergy were outspokenly against her appointment. A Christian Brother M.S. Kelly argued that <quote> 'her mental constitution was the constitution of Trinity College'. </quote> Mgr D'Alton of Tuam told the local library committee that they were not appointing a <quote> 'washer-woman or a mechanic but an educated girl who ought to know what books to put into the hands of the Catholic boys and girls of this county which was at least 99 per cent Catholic'. </quote>
+          </p>
+          <p> The Catholic-Protestant communities had been driven further apart by the Lambeth Conference decision in 1930 on contraception. D'Alton stressed the difference between the two churches on birth control: <quote> 'supposing there were books attacking these fundamental truths of Catholicity, is it safe to entrust a girl who is not a Catholic, and is not in sympathy with Catholic views, with their handling?', </quote> he asked. These comments echoed the profound mistrust that existed in 1930 at official level between the Protestant and Catholic churches. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/131.00000</textSigle>
+            <title> South Belfast Herald and Post</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> Peter Hutcheon</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-004$A">
+          <head> Peter Hutcheon looks at a project which is charting local history </head>
+          <head> A TRIP DOWN MEMORY LANE. . . </head>
+          <p>
+            <quote>
+              <hi rend="bold"> "A COMMUNITY history by the people for the people"</hi>
+            </quote> is how NICEA describes its oral history project in south Belfast.
+            </p>
+          <p> Now entering its second phase, the project has captured the imagination of both the participants and the thousands of people who have been to see the results of the initial stage. 
+            </p>
+          <p> NICEA the Northern Ireland Community Education Association, has spent the past year charting memories and gathering photographs depicting the history of the Markets and Lower Ormeau areas. 
+            </p>
+          <p> The stories have been compiled into five booklets which have gone on display, along with the extensive collection of photos, at various community centres throughout the area. 
+            </p>
+          <p> Visitors from other parts of Northern Ireland, the Republic and from as far afield as America and Canada have expressed an interest in displaying the work further afield. Indeed, an exhibition is planned for the Irish Heritage Centre in New York. 
+            </p>
+          <p> And eventually copies of all the work produced by the project will be kept at the Ulster Folk Museum. 
+            </p>
+          <p> Project manager Caroline Bingham explained that the Lower Ormeau and Markets area was chosen for phase one because it was an inner-city area where cross-community links could be strengthened. 
+            </p>
+          <head>
+            <hi rend="bold"> Contrast </hi>
+          </head>
+          <p>
+            <quote> "The project has three distinct aspects: recording the stories of many working class people, broadcasting and publishing their stories and organising photographic exhibitions." </quote>
+          </p>
+          <p> Work is now beginning on collecting stories and photos from the Donegall Pass area of the city. A Protestant working class area, it has been chosen deliberately to contrast with the initial phase. 
+            </p>
+          <p> Next year the group plans to interview people from both sides of the Donegall Road, the Village and the Falls Road ends, to contrast the memories of this mixed area with the previous two. 
+            </p>
+          <p>
+            <quote> "Ultimately we want to show both Catholics and Protestants that there is very little difference in their backgrounds," </quote> said project worker Anne O'Shea. 
+            </p>
+          <p>
+            <quote> "We hope that this realisation that they come from the same backgrounds and experience the same problems will contribute a little to understanding each other." </quote>
+          </p>
+          <p> Jill McKenna, who compiled the five booklets of interviews, explained: <quote> "We have aimed with these publication to give ordinary people a platform to talk about their own lives and experiences. It 's history from the bottom up, instead of the usual way from the top down." </quote>
+          </p>
+          <p>
+            <quote> "We hope that, taken as a whole, they will give a new insight into the recent history of this fascinating and diverse area, which in itself is a microcosm of the city of Belfast." </quote>
+          </p>
+          <head>
+            <hi rend="bold"> Community </hi>
+          </head>
+          <p> Material gathered through the project has now been incorporated into local school 's history lessons. 
+            </p>
+          <p> Project worker David Holloway pointed out: <quote> "Most of the history taught in schools deals with the major political figures, not how life was like for ordinary people living in the community." </quote>
+          </p>
+          <p>
+            <quote> "These stories and memories give an insight into how life really was for the people coming from the children 's own areas." </quote>
+          </p>
+          <p> NICEA was founded in 1984 to promote the need and find funding for community education. 
+            </p>
+          <p> The funding for the current project has come from the Belfast Action Teams, while Belfast Exposed helped with the photography. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/131.00001</textSigle>
+            <title> South Belfast Herald and Post</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> Peter Hutcheon</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-004$B">
+          <head>
+            <hi rend="bold"> A STORY FROM THE PAST. . . </hi>
+          </head>
+          <p>
+            <hi rend="bold"> THE following is an extract from 'Belfast Women — Past and Present', compiled by Jill McKenna, which was one of the five booklets produced in the initial phase of the NICEA project: </hi>
+          </p>
+          <p> One of the saddest aspects of "the old days" was the treatment meted out to unmarried girls who became pregnant. 
+                </p>
+          <p> They were condemned by society and seen as a disgrace to their families. Sometimes they were forced into hastily-arranged marriages, and sometimes they were thrown out into the streets to fend for themselves. If they weren't, they were sent away to homes for unmarried mothers or "fallen women", where they were made to work hard till their babies were born as a punishment for getting pregnant. Some had their babies in the workhouse. The babies were almost always adopted, often without the mother 's consent. 
+                </p>
+          <p> If they were lucky, other members of the family were prepared to help them. A widow in her eighties remembered what happened when her cousin, who came from the country, became pregnant. 
+                </p>
+          <p>
+            <quote> "When I was fourteen, my mother told me one Saturday that I had to go out the road in a side-car and meet my aunt and cousin." </quote>
+          </p>
+          <p>
+            <quote> "My cousin would have her case with her and she was to come back home with me. She didn't give me any reason, but unless you were told you didn´t ask questions. So I did what she said and brought my cousin back and my mother put a single bed in the parlour and put her in there." </quote>
+          </p>
+          <p>
+            <sic> He </sic>
+            <corr> Her </corr> mother, a widow, took in lodgers to make ends meet. 
+                </p>
+          <p>
+            <quote> "When the men were at work, my cousin had the run of the house, but before they came in at five o'clock she had to go into the parlour and stay there. I didn't know why she was kept in there." </quote>
+          </p>
+          <p>
+            <quote> "Then one morning about five o'clock I woke up and heard a child crying. I slipped downstairs and I could hear a child crying in our parlour. I didn't know what was going on, but I crept back upstairs, because if my mother had caught me down there she 'd have hit me!" </quote>
+          </p>
+          <p> Unmarried mothers are now a thing of the past. Nowadays they are called single parents, reflecting the more sympathetic and tolerant view of society in general towards unmarried girls who become pregnant. 
+                </p>
+          <p> Some things at least have changed for the better since a terrified girl was smuggled to the city in a side-car to escape her <sic> fathers ' </sic>
+            <corr> father 's </corr> wrath. 
+                </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/131.00002</textSigle>
+            <title> South Belfast Herald and Post</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> Peter Hutcheon</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-004$C">
+          <head>
+            <hi rend="bold"> HILLSBOROUGH </hi>
+          </head>
+          <p> That immaculate little County Down town, owes its origin to Peter Hill, son of Moyses Hill and husband of a sister of the formidable Somhairle Buidhe MacDonnell, cousin and son-in-law of Great Hugh O'Neill. Around 1630 Peter Hill started to build a village and a fort on the site of Hillsborough. These were, however destroyed in 1641, but somewhere in the 1650s Peter 's uncle and heir, Col. Arthur Hill, built an artillery fort on the site. In 1660 it was made a Royal garrison, with Hill and his heirs hereditary Constables. It was not long after this that Hill obtained a charter for his town - from then onwards to be known as Hillsborough. The first Marquess of Downshire (Wills Hill) sponsored Goldsmith 's "Deserted Village" and became George III 's Secretary of State for the American Colonies. His successor, the second Marquess, who lived from 1753 until 1801, was a strong advocate of religious toleration and strongly opposed the Union, for which he dearly paid. 
+            </p>
+          <p> It is to the Marquises of Downshire that Hillsborough owes its English influence. 
+            </p>
+          <p> William of Orange stayed at the fort on his way to the Boyne in June, 1690, and throughout the years many Royal personages spent time at Hillsborough Castle when it was known as Government House, official residence of the Governor of Northern Ireland. 
+            </p>
+          <p> The building of this impressive structure was started around 1760 for Wills Hill and was enlarged for the second Marquess of Downshire at the end of the 1700's by Brettingham. Further additions were made to the house in the middle of the 18th century by the architect, William Sandys. A tall column on a high hill, south of the town commemorates the third Marquess of Downshire and at the north end of Main Street, facing the gate of St. Malachy 's Church, there is a statue of the fourth Marquess. The lovely Parish Church of St. Malachy, which was completed in 1772 is a highly interesting Gothic structure which can still boast most of its original furnishings. 
+            </p>
+          <p> It was built for Wills Hill and is thought to incorporate much of the fabric of its 1662 predecessor. Wills Hill 's aim was to have it made the cathedral of the Protestant diocese of Down. 
+            </p>
+          <p> The architect 's name is unknown, but Hill himself closely supervised the work. Sir Thomas Drew re-arranged the chancel in 1898 and set the prayer desk and pulpit back against the side walls and aligned the pews (which had been behind the desk and pulpit) along the walls. In the same year, the screens shutting off the baptistry and vestry from the west end of the nave were removed. In 1951 and 1965, the well-known Ulster architect, Denis O'D Hanna, screened off the transept towers and removed the old vestry at the west end of the nave. The new electric lights were designed by Sir. Albert Richardson, P.R.A. Other noteworthy features include the 18th century prayer desk, pulpit and box pews, the east window (to the design of Sir Joshua Reynolds) by Francis Elginton of Birmingham; the north transept memorial to the fifth Marquess of Downshire (1844-74), by Forsythe; William Harty, father of Sir Hamilton Harty, celebrated conductor and composer was organist to the church from 1878 until 1918 and near to the west door is a memorial to Sir Hamilton in the form of a bird bath. There is the State Chair from the Chapel Royal, Dublin Castle; the south transept organ (from Hillsborough Castle) of 1795, by G. P. England and the west gallery organ (1772), by John Snetzler, which was- re-built several times. Near to the Parish Church stands Col. Arthur Hill 's 17th century star-shaped artillery fort. A 1758 Gothic tower house occupies the site of the original gate-tower and a contemporary Strawberry-Hill gazebo crowns the 1758 cart entrance. The lawn gates in front of the tower house are late 18th century, as are the ones at the entrance to Hillsborough Square. 
+            </p>
+          <p>
+            <hi rend="bold"> The Carriage Restaurant </hi> of Old Coach Road, Hillsborough, certainly has an enviable reputation for catering for functions, large or small. The restaurant can cater for all types of celebrations, from the intimate dinner-for-two, to weddings, family get-togethers, christenings, etc., and is suitable for parties of up to 80 people. Situated in the delightful County Down countryside, just half-a-mile from the town centre, the Carriage uses only the freshest local produce to maintain the highest possible standards. Personal menus can easily be arranged to suit individual needs. Whether dining as a member of a party or as an intimate twosome you can be assured of a warm Christmas welcome, with a friendly and efficient service, and as well, of course, excellent cuisine. An a la carte menu is available throughout December for parties up to 20 persons, with some tantalizing dishes on offer. Sample the delights of roast pheasant, fresh from one of the local estates, served with black cherry sauce, or Paupiette de Sole Duexelle Lobster sauce, a delicious fillet of sole stuffed with mushrooms and shallots, coated with a lobster sauce, and garnished with fleurons. The Restaurant is fully licensed and has an extensive wine list. If you are tired of the usual meals on offer this season, why not try the Carriage. You certainly won't be disappointed. Bon Appetit! 
+            </p>
+          <p> Especially for weddings! Owners Ray and Sylvia Beacom will happily prepare personal menus to the bride and groom 's own specifications. The Carriage Restaurant is only too glad to help you make your wedding day that little bit different and certainly very special. 
+            </p>
+          <p> The Carriage Restaurant, Old Coach Road, Hillsborough. Tel (0846) 68924 (for reservations). 
+            </p>
+          <p>
+            <hi rend="bold"> Pik-Kwik </hi> , Hillsborough 's local newsagents and video library is the height of convenience. Dash in early in the morning to collect your daily newspaper along with the milk for your breakfast, and browse at your leisure in the evening at the wonderful selection of video-tapes for your night 's entertainment. 
+            </p>
+          <p> Situated on the Lakeland Road in Annahilt is the beautiful little <hi rend="bold"> Cornmill Restaurant </hi> which provides the perfect setting for that intimate meal in a setting which is both friendly and welcoming. Brian and Yvonne Cosgrove are the hosts and they, and their helpful staff, take a deal of care that your meal will be both enjoyable and memorable. Tel. (0238) 532818. 
+            </p>
+          <p> Marjory Cunningham is putting a lifelong interest in flower arranging to very good use in her <hi rend="bold"> Flowers in the Attic </hi> business which she runs from her home in Hillsborough. Her forte lies in designing arrangements to suit your particular location and needs. Marjory, and her daughter Allison, can go along to your office, restaurant or your home to give expert and artistic advice on how to enhance your decor, Flowers in the Attic specialise in dried flowers, and, since setting up business two years ago, have been very pleased by the response from their many satisfied customers. Most of their business is generated by word of mouth, as sure sign that people are very pleased with their service. Tel. (0846) 683599. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/132.00000</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> Mark Challis </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year" />
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-001$A">
+          <head>
+            <hi rend="bold"> OUT OF STEP</hi>
+          </head>
+          <head>
+            <hi rend="bold"> Pól Ó'MuirÍ  </hi>
+          </head>
+          <p>
+            <hi rend="bold"> A report on the Irish language published last month by the Committee on the Administration of Justice is the latest to argue that the right to speak Irish should be a civil one, not a government favour. </hi>
+          </p>
+          <p> The CAJ calls upon the British government to sign the European Charter for Regional or Minority Language and adopt a more positive policy towards the Irish language, <quote> "as it has toward the two other living Celtic languages in the United Kingdom, Welsh and Scots Gaelic" </quote>. The charter, adopted in June 1992 by a substantial majority of the ministers ' deputies of the Council of Europe, offers a bill of rights for speakers of minority and regional languages. 
+            </p>
+          <p> The report 's conclusion is measured, intelligent and reasonable, and contains much which Irish speakers would support. Yet it is very unlikely the government will implement even a fraction of the recommendations. 
+            </p>
+          <p> The charter, says the CAJ, guarantees the right to use minority languages in the public sphere — in schools, in courts, in dealings with administrative authorities and public services, and in economic and social life. It reflects the latest thinking in the international human rights community on linguistic rights, as a facet of minority rights. And its <quote> "proactive" </quote> approach is a useful tool for the Irish language community in pressing for government support. 
+            </p>
+          <p>
+            <quote> "The history of discrimination faced by the Irish language merits and appropriate response from the government. The European Charter provides a mechanism for beginning to redress the complaints of Irish language activists. It would also keep the British government in step with its European partners," </quote> the report says. 
+            </p>
+          <p> Yet this government is not much bothered about keeping in step with Europe. Its attitude remains to do as little as possible, as seldom as possible. It has still to rescind the Miscellaneous Provisions Act, which prohibits erection of Irish street signs — and is in no rush to do even that. 
+            </p>
+          <p> The Northern Ireland Office stresses its support for Irish-language education. But practitioners retail countless stories of prevarication and uninterest from government bodies, who seem intent on moving the goalposts whenever possible. 
+            </p>
+          <p> Failure to sign the charter would be another example of this indifference — an indifference shared by the Dublin government, which has also yet to sign up. To accept even some paragraphs would, however, be a worthwhile start, proving just how seriously Stormont regards its duty to the Irish language. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/132.00001</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> Mark Challis </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year" />
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-001$B">
+          <head>
+            <hi rend="bold"> TRIAN TELLS THE ARMAGH STORY </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Northern Ireland Easter Special by Clare Ogle </hi>
+          </head>
+          <p>
+            <hi rend="bold"> EARLIER this month a year-long celebration entitled 'Armagh Together' got off to an auspicious start in the city 's newest tourist development. </hi>
+          </p>
+          <p> Appropriately, the launch-pad for this cross-community marketing initiative was St Patrick 's Trian which opened in Armagh 's English Street in October last year. This interpretive centre tells 'The Armagh Story' covering the city 's history from its prehistoric period to the Georgian era. 
+            </p>
+          <p> Armagh District Council Marketing Assistant, Karen Houlahan, explained the significance of the word Trian (pronounced Tree an). 
+            </p>
+          <p>
+            <quote> "In ancient times Armagh was divided into three areas. Trian is Irish for three, and the area where this centre is located was in fact one of those 'trians'.</quote>
+          </p>
+          <p>
+            <quote> "As well as 'The Armagh Story' which takes the visitor from pre-Christian times to modern day, St Patrick 's Trian also has a children 's fantasy area, The Land of Lilliput, based on Jonathan Swift 's book, Gulliver 's Travels, which was partially written in Armagh." </quote>
+          </p>
+          <p> The size of the new tourist attraction is deceptive. If approached through the Tourist Information Centre on English Street, it suddenly mushrooms in front of the visitor after passing through the courtyard at the rear of the TIC. Visitors also have direct access to the new centre from the adjacent car park. 
+            </p>
+          <p>
+            <quote> "Naturally St. Patrick 's Trian will play a big part in the year-long 'Armagh Together' celebration with over 200 events taking place to commemorate St Patrick coming to Armagh 1,550 years ago. Hence the opening of St Patrick's TRIAN in time for the launch of Armagh Together," </quote> said Karen. 
+            </p>
+          <p> Other characters who played a significant role in Armagh 's history line up to meet visitors at the entrance to 'The Armagh Story'. 
+            </p>
+          <p>
+            <quote> "Firstly, we have the life-size figure of John Wesley, founder of the Methodist Church who preached in Armagh many times. He looks quite diminutive, but he was in fact just five feet tall," </quote> explained Karen. 
+            </p>
+          <p>
+            <quote> "There is also a scribe who would have played an important part in Armagh 's history and Dr William Crolly who was foremost in the construction of the Roman Catholic Cathedral around 1840. The 'modern visitor' figure of the Italian tourist symbolises all of the tourists we hope to welcome to St Patrick 's TRIAN and indeed the whole area. Close to the exhibition entrance is a suitably fierce Celtic warrior, guarding the dolmen tomb which is the starting point for the visitor 's journey to rediscover the story of Belief - the story of Armagh." </quote>
+          </p>
+          <p> And as we entered the dolmen tomb, thought to have been used for burial purposes, and with audio-visual aids and haunting Clannad-type music, the story of the life and rituals of prehistoric man began to unfold. 
+            </p>
+          <p>
+            <quote> "The next chamber contains a model of the original Navan Temple. Navan, in pre-Christian times, was the political and spiritual capital of Ulster. The wrap-around murals tell the story of Navan Fort - Emain Macha - and the mighty Irish warrior, Cu Chulainn," </quote> Karen explained. 
+            </p>
+          <p> In the 5th century AD, St Patrick came to Armagh where local chieftain, Daire, gave him a site on which to build a church. After the chieftain 's own conversion to Christianity, a prestigious hilltop site was granted and this is where the Church of Ireland Cathedral stands today. 
+            </p>
+          <p>
+            <quote> "In this next section, the story of St. Patrick, who came to Armagh around 444 AD, is told. Visitors learn of the success and the consequences of his work and of the story of St Patrick and the fawn on the hill where the Roman Catholic Cathedral now stands. We have two cathedrals of course in Armagh, both named after St Patrick. Further along there are excerpts taken from the Book of Armagh which was written around 807. Unfortunately we don't have the Book of Armagh here as it is in Trinity College Dublin, but we do hope to get a replica of it," </quote> said Karen. 
+            </p>
+          <p> In the next chamber, the visitor comes upon scenes of terror as marauding vikings pillage and burn. The impact of viking raids was widely felt during the 9th and 10th centuries with Armagh being destroyed repeatedly. A replica of an ancient Celtic Cross dating from the 11th century (the original can be seen in the Church of Ireland Cathedral) bears witness to scenes of terror as mothers attempt to protect children and monks seek to save church treasures. A wall panel gives details of viking raids carried out in the area. 
+            </p>
+          <p> The visitor next comes to a series of church windows which light-up in sequence as the story of Armagh moves on through medieval times, the Reformation and finally leads the visitor into present-day Armagh. 
+            </p>
+          <p> The last life-size character to introduce himself is <quote> "architect and humble servant" </quote> Francis Johnston. 
+            </p>
+          <p>
+            <quote> "He was responsible for many of the fine Georgian buildings that exits in Armagh today including the impressive Court House which is currently under renovation. Visitors may wonder at his incredibly life-like face with moving mouth and different facial expressions. His 'face' is actually blank and an image is projected onto the model which is really ingenious and quite realistic," </quote> said Karen. 
+            </p>
+          <p> The last sequence of colourful murals pick out other attractions in the area that are worth a visit — Navan Fort, The Palace Stables Heritage Centre, the National Trust properties - The Argory and Ardress House, the Observatory and the Planetarium. 
+            </p>
+          <p>
+            <quote> "Incidentally, the Planetarium has two new projects underway - an Astropark which has already opened and the Eartharium which officially opens in July," </quote> Karen pointed out. 
+            </p>
+          <p> As visitors exit 'The Armagh Story' they come to the craft shop, before setting off along the Granary Mall, the full length of which is dedicated to the Allison Collection of historical photographs. Leaving history behind, the Mall leads to the land of the little people, a constructed castle where a gigantic Gulliver recounts his adventures in the Land of Lilliput. 
+            </p>
+          <p>
+            <quote> "Children are just so amazed when they see the size of Gulliver in comparison to the tiny Lilliputians," </quote> added Karen. <quote> "They 're completely mesmerised as they listen to this friendly giant tell tales of his adventures with the little people." </quote>
+          </p>
+          <p> The final port of call for many will probably be the Pilgrim 's Table Restaurant which has a charming conservatory/patio area for al fresco eating on warm days. Notice the marble inlaid plaque marking a visit by Jacques Delours, President of the European Commission on November 3, 1993. 
+            </p>
+          <p> The EC President was one of the early visitors to St Patrick 's Trian. By mid-February this year 11,000 people had heard 'The Armagh Story' and shared in Gulliver 's adventures. With a packed year ahead celebrating 'Armagh Together' many thousands more are certain to be drawn to the Trian to learn about Armagh's rich heritage.
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/132.00002</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> Mark Challis </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year" />
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-001$C">
+          <head>
+            <hi rend="bold"> A CHIP OFF THE OLD . . . </hi>
+          </head>
+          <head> THE COUNTRY RHYMES OF JAMES ORR </head>
+          <head>
+            <hi rend="bold"> THE BARD OF BALLYCARRY 1770 – 1816 </hi>
+          </head>
+          <p> DAN Quayle can say goodbye to the White House and fade into obscurity safe in the knowledge that he was, after all, correct about the common spud! 
+            </p>
+          <p> The man who once described a group of Samoans as <quote> "happy campers" </quote> and told his supporters that if they did not succeed they ran the risk of failure, thought he was helping out in a school quiz.
+            </p>
+          <p> He spelled it POTATOE and squirmed when the world 's media ridiculed him — but it now emerges that the retiring vice-president of the United States got it right. 
+            </p>
+          <p> In some eyes at least. 
+            </p>
+          <p> And it is the writings of a once well-loved Ulster poet whose verses are re-published today which may help save Quayle 's face. 
+            </p>
+          <p> The very first poem in <hi rend="bold"> The Country Rhymes of James Orr </hi> (Pretani Press, <amp> pound sign </amp> 5.99) is called "To the Potatoe" . 
+            </p>
+          <p> And Orr, a United Irishman who took part in the 1798 Rebellion and then renounced violence, had got the spelling of the vegetable correct — down to the final letter. 
+            </p>
+          <p> He was writing in the broad Scotch (braid Scotch) which has now been pronounced a lesser-used language by the European Community. 
+            </p>
+          <p>
+            <quote> "And it was the folk poets of Ulster who were spelling the word properly," </quote> says Dr Philip Robinson of the Ulster Folk Museum, editor of the new edition of the Orr book. 
+            </p>
+          <p>
+            <quote> "What happened to change the spelling in the English language later isn't the fault of James Orr or Dan Quayle." </quote>
+          </p>
+          <p> The politician, George Bush 's sidekick through thick and thin for the past four years, has been sent a copy of the book. 
+            </p>
+          <p> Philip Robinson and Pretani Press await his comments with interest. 
+            </p>
+          <p> Perhaps if Dan 's vindication had come a little sooner there might have been a few more votes cast in the direction of the Bush-Quayle camp in the Presidential election! 
+            </p>
+          <p> There is currently an upsurge of interest in the Ulster-Scots language, particularly among the young of the province who are researching their roots. 
+            </p>
+          <p> The Ulster-Scots Language Society has been formed — and is flourishing — to give the Ulster-Scots tongue new age respect. 
+            </p>
+          <p> And an Ulster-Scots dictionary is being prepared which will be introduced into schools along with literature in the language, like the folk poems of Orr. 
+            </p>
+          <p> Around Carrick, Ballymena, Greyabbey and some other places where Ulster-Scots trips off the tongue easily to this day, the dictionary won't be required. 
+            </p>
+          <p> Born in a thatched cottage in Ballycarry, Co Antrim, Orr was taught weaving by his father. He wrote his first verses as a boy at Ballycarry Presbyterian meeting house. 
+            </p>
+          <p> His parents educated their only son at home to ensure a strict Calvinistic upbringing. He wrote a poem called A Parent 's Flinty Heart to express his disapproval of his father and mother 's restrictive views. 
+            </p>
+          <p> But they couldn't stop him straying into the United Irishmen. 
+            </p>
+          <p> After the '98 Rebellion young Orr fled across the Atlantic to New England and, like many of his contemporaries, took with him Ulster 's own varieties of the potato (or potatoe?). 
+            </p>
+          <p> Within a year James was back home. He preferred to be among the people and the places he wrote about. But he did have poems published in America and earned some critical acclaim. ........ 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/133.00000</textSigle>
+            <title> The Tribune Magazine</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Harry Ferguson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1996</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-007$A">
+          <head> There 's no sign of our Daniel O'Donnell in Nashville, the country music capital of the world, writes <hi rend="bold"> Harry Ferguson</hi>
+          </head>
+          <head> Kitsch and country </head>
+          <p> A COUPLE of days into my trip to Nashville I began to feel uncomfortable. The more I got the feel for the place and came to understand that there are only three important things to Nashville as a location – country music, country music, and country music – the more I was beset with a sense of existential angst; that something was missing. It was Daniel O'Donnell. More to the point, it was the <hi rend="italic"> absence </hi> of Daniel that shocked. Not a sign of him anywhere in the Country capital of the world. Some four years after the music business re-classified his records as not country, here I was having to confront headon my denial of the tragedy of what they did to Daniel. 
+            </p>
+          <p> While the Country Music Hall of Fame minus Daniel seems a contradiction in terms, it is superb; a real treasure. As well as featuring today 's stars – Garth Brooks and co – it is a veritable journey into the stars of one 's childhood, with original outfits, cowboy boots, instruments, original records and other trinkets that were adorned by the likes of Roy Rogers, Johnny Cash, Jim Reeves, Dolly Parton, Emmylou Harris. There 's even Elvis Presley 's very own 'Solid Gold' 1960 Cadillac which was his favourite. 
+            </p>
+          <p> The symbiotic relationship between Nashville and country music all began when the Grand Ole Opry Theatre opened in the 1920s and established itself as the country venue. While the original theatre is still there in Downtown Nashville and worth a visit, today 's Opry has been relocated to a site some 20 miles outside of the City which is disappointingly hard to reach without a car. 
+            </p>
+          <p> There were other compensations for Daniel 's absence. Like meeting Willis Gupton, who informed me that when he was four years old his <quote> "daddy, who was a bluegrass picker," </quote> gave him his first guitar. Willis 's promotional literature refers to his <quote> "no nonsense approach [as] refreshing, exciting, and a rare breed especially in today 's spit and polish, New York/LA style of country music that has invaded Nashville. You can't help but love this guy 's honesty, and sense of good ol' fashioned country humour … Get off that couch and give Willis Gupton a spin! He 'll do more for ya than 14 cups of strong black coffee." </quote> Howl me back!! 
+            </p>
+          <p>
+            <quote> "Invade Nashville" </quote> – now why didn't Daniel think of <hi rend="italic"> that? </hi> Willis gave me a promo' copy of his debut single, 'Bringing Home The Bacon', and – in that typically pathetic post-colonial low self-esteem Oirish way of not being able to take something for nothing – I assured him that there could well be a spot waiting for him on <hi rend="italic"> Kenny Live. </hi> God knows it feels like just about everyone else from Nashville has been on it. 
+            </p>
+          <p> The naked ambition of the endless stream of wannabees is just one of the eerie pleasures of Nashville. Even the buskers have cut CDs. I bought one for <amp> dollar sign </amp> 10 off a guy called Jeff Paz who was singing his heart out on the street accompanied by a very sophisticated canned soundtrack. He autographed it for me with such sincerity and earnestness that the likes of Willis and Jeff make Daniel seem <hi rend="italic"> mean. </hi>
+          </p>
+          <p> Garth Brooks is the superstar ideal they 're all dreaming of. When you visit the "Garth Store" in Downtown Nashville, you can see why. This guy is even richer than Daniel O'Donnell, and possibly even nicer. If you don't believe me, Pat Kenny seems to think so, and he 's met them both. So there. 
+            </p>
+          <p> America never fails to fascinate, and so a visit to Nashville enables one to absorb the general horrors and delights of this extraordinary country. The obsession with food – it 's everywhere. The wonderful customer service. While the deference can irk – "Sir" – the guy who served me in Nashville 's brilliant Hard Rock Cafe was just magic in terms of the routine care and attention he lavished on me. 
+            </p>
+          <p> And who cares anymore if they don't <hi rend="italic"> really </hi> give a damn whether or not you <quote> "have a nice day!" </quote> I 'd prefer it anyday to the feeling of being ignored and a nuisance that can be served up in some Irish businesses. Then there 's the television – travel always gives a new perspective on our own national passions – and if Diarmuid Doyle thinks RTE is bad, jaysus he should sit through a few days of trash they call American TV. If they 'd only make those confessional talk-shows <hi rend="italic">
+              <Irish> as Gaeilge! </Irish>
+            </hi> Or perhaps not. 
+            </p>
+          <p> Yet, on its own terms, Nashville has to go down as one of the USA 's most superficially boring cities. Not only does it lack the in-your-face dynamism and culture of a New York or a San Francisco, it looks for the most part like a dump. Give it half a chance though and – not unlike Daniel himself – it grows on you. The cowboy boot and hat shops are a delight – boots of all shapes and sizes and Stetsons as far as the eye can see. You can even buy a pair of cowboy golf boots – studs and all! 
+            </p>
+          <p> Nashville is the nerve centre of the religious publishing industry of the States. The gigantic shops make our own Veritas look, well, small. In the Baptist shop, for instance, you can buy books on every aspect of the human condition – with the exception of homosexuality, of course (see elsewhere under sexual perversions and the devil). 
+            </p>
+          <p> My own favourite was the section on masculinity and the family which included titles such as <hi rend="italic"> Boys: Shaping Ordinary Boys into Extraordinary Men </hi> by William Beausay II (what I want to know is just how did Mr and Mrs O'Donnell get a hold of that book in Donegal and so long ago?), <hi rend="italic"> Boys to Men: How Fathers Can Help Build Character in Their Sons, </hi> by Steve Lee, Ed D and Chap Clark. The authors of these books, and others in the 'Men of Integrity' series, are pictured on the dust-jackets complete with their much heralded Ed D 's and looking even cleaner than Daniel – which is hard to believe I know, but understandable I suppose given the number of times they 've been baptised. 
+            </p>
+          <p> The religious revival in the States is quite something. There are over 80 Baptist Churches within that single denomination alone in the greater Nashville area (the State of Tennessee has literally hundreds). Just one of these churches holds 4,000 and has a congregation of 6,000. They have two services on a Sunday, some 20 pastors, and a nightmare organising the car-parking. 
+            </p>
+          <p> Nashville, I learned, is the kitsch capital of the States – Junk City USA.  <sic> the </sic>
+            <corr> The </corr> knickknack and memorabilia shops are just packed full of the most naff range of merchandise imaginable; enough to make my Daniel O'Donnell mugs and calendar seem sophisticated, part of high culture. Inevitably perhaps, as nostalgia isn't what it used to be, Elvis memorabilia looms large – even if he is a Memphis boy. 
+            </p>
+          <p> A very well organised tour of the Music City neighbourhood, where all the big stars have their agents, record companies their administrative headquarters and the big recording deals are struck etc, culminates in a visit to RCA 's Studio B. The highlight was a guide who clearly loves The King, identifying with such relish the very spot where Elvis stood to record some of his great albums. 
+            </p>
+          <p> Ultimately, Music City USA really comes into its own after dark. The competitive environment of the music business is such that the standard of fun-of-the-mill acts in bars and clubs is extraordinarily high and fabulous value as most have no cover-charge. 
+            </p>
+          <p> A visit to the Wild Horse Saloon for the Line-Dancing is a must. These cowgirls and boys (real men <hi rend="italic"> do </hi> line-dance, it seems) sure know how to move in majestic ways. They 'll even let you join in, although beware as those involved in the sessions for so-called beginners seemed frighteningly co-ordinated and twinkly-toed to this wrong-footed eejit. Hardly surprising, perhaps, as I never could quite master jiving. 
+            </p>
+          <p> And speaking of jiving, Daniel, you 're as well out of it … But watch out for yer man Willis Gupton, "invading Ireland" and creeping up your inside. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/133.00001</textSigle>
+            <title> The Tribune Magazine</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Harry Ferguson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1996</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-007$B">
+          <head> The Roundwood Inn is the perfect place to whet a healthy appetite honed in the fresh mountainous air of Wicklow, writes <hi rend="bold"> Tom Doorley </hi>
+          </head>
+          <head> Pub grub to rival haute cuisine </head>
+          <p> The Roundwood Inn may not be the highest pub in Ireland but it 's not far off it. However, it is unique in another way. I can think of no other pub that has such a splendid restaurant attached and there are very few indeed that can rival Jurgen Schwalm 's superb and inexpensive bar food. 
+            </p>
+          <p> This is the place to aim for after a trek in the mountains because it deals with healthy appetites honed in the fresh air of Wicklow. The food is unpretentious, scrupulously fresh, sensitively prepared and served in generous portions. 
+            </p>
+          <p> You can enjoy an aperitif in the bar which is wonderfully un-twee, a real hostelry with lots of bronzed mountainy men getting themselves outside creamy-headed pints of Guinness. Then head in to the restaurant. 
+            </p>
+          <p> We arrived on a quiet Thursday evening with a gale blowing outside and the kind of rain that soaks you to the skin in seconds making the billage of Roundwood look like an oasis in a wintry desert. 
+            </p>
+          <p> I had snails, French ones, not the rather rubbery Irish version, served out of the shell (thank heaven), swimming in bubbling, pungent garlic butter and topped with breadcrumbs and finely chopped parsley. 
+            </p>
+          <p> Snails to me don't taste of very much but they are a wonderful way of eating garlic butter. These snails were very good indeed, tender and juicy. 
+            </p>
+          <p> My companion 's scallops, were plump almost to the point of obesity, and intense with flavour, just flashed in the pan for a few seconds with some garlic butter. In all its simplicity this dish showed how first class raw materials and a deft hand in the kitchen leave haute cuisine in the shade. We mopped up the buttery juices with chunky, dark brown bread. 
+            </p>
+          <p> My brick-shaped sirloin steak was perfection in all its juicy, pink tenderness and the accompanying peppercorn sauce, while not the best I 've had, was satisfactory all the same. The companion's version – mountains of the stuff – was pleasantly pink in the middle after gentle grilling, moist and surprisingly tender. It came with a dense, dark, wild mushroom sauce which hit the spot. 
+            </p>
+          <p> Our ratatouille, a rather grey, mushy affair, was the only low point. Boiled new spuds of impressive size (not the fashionable little marbles) were put to good effect in mopping up the sauces and braised lengths of celery were assertively flavourful and not even remotely overdone. 
+            </p>
+          <p> A blueberry pancake was unctuous yet acidic enough not to be cloying and my apple and almond pancake was a triumph. It was served flat and it seemed that almond and apple slices were added at the point where the batter began to set, then sugared and put under a very hot grill to caramelise the lot. It was superb and very, very filling. Commercial vanilla ice cream acted as a cooling lubricant. 
+            </p>
+          <p> We hugely enjoyed a bottle of dry Baden white wine from Germany, Martin Schongauer Grauer Burgunder Trocken, actually a Pinot Gris, vinified bone dry and weighing in at 11.5 <amp> per cent </amp> ( <amp> pound sign </amp> 16.95). It was excellent and is imported directly by Jurgen Schwalm himself. 
+            </p>
+          <p> As the rain beat against the windows in horizontal sheets we fortified ourselves against the long journey home with Redbreast, the only pure pot still Irish whiskey on the market, immaculately smooth and civilised and infinitely superior to your average trendy malt Scotch. Expresso was temporarily not available but Jurgen brewed up some extra strong coffee in a plunger pot. With a brace of Ballygowans the bill came to <amp> pound sign </amp> 77.00 
+            </p>
+          <hi rend="italic"> The Roundwood Inn, Roundwood, Co. Wicklow. Phone: 01-2818107/2818125 </hi>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/134.00000</textSigle>
+            <title>Irish Astronomical Journal</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Patrick A. Wayman</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-008$A">
+          <head> 4 Reconstruction After World War II, 1947-1974 </head>
+          <p> The task of writing the full story of Irish astronomy from the early 1940's, when Eric Lindsay at Armagh first seriously tackled the possibility of a joint approach with a re-founded Dunsink, up to Lindsay 's death in 1974, has not yet been comprehensively faced. In conjunction with Hermann Bruck and Susan McKenna-Lawlor, I produced personal accounts in my own history of Dunsink (Wayman, pp. 206-258), but Bennett specifically omitted, in his bicentennial history of Armagh, the details of the Boyden Observatory collaboration after 1954. On this occasion, I cannot do the subject justice, but it is of great interest and must be included to the extent of the time available to me. 
+            </p>
+          <p> Eric Lindsay, coming to Armagh in 1938, indeed coming back to Armagh, his native county, knew that major alterations had to be made if the observatory were to survive. He had spent some years at Harvard Observatory and had been entrusted for two years with the post of Assistant Director of Boyden Observatory in the Orange Free State in South Africa. The advent of the Second World War notwithstanding, he took the strengthening of Irish participation in practical observing programmes at Boyden as one of his major interests for the remainder of his life, that is over thirty years. 
+            </p>
+          <p> Lindsay saw that Eamon de Valera, then Taoiseach in the Dublin government, was keenly interested in including Dunsink Observatory in his new Dublin Institute for Advanced Studies; indeed, de Valera had admired Sir Edmund Whittaker during the years 1906 to 1912 when he, de Valera, had been a mathematics lecturer in the Carysfort Teachers Training College. He had taken as one of his aims for the Institute the perpetuation in conscious memory of, and if possible the future emulation of, Sir William Rowan Hamilton as an Irish mathematician. The observatory at that time was rented to two tenants, the main building to Dr Oliver Chance, a prominent member of the medical profession, and Dunsink House to Rev. R. M. Gwynn, a Fellow of Trinity College, and was quite out of use as an observatory, although mail continued to come from all over the world, and some semblance of dealing with it was maintained by F. J. O'Connor, a Trinity lecturer in astronomy for the general degree, who had assisted at Dunsink since he was 16 years old. 
+            </p>
+          <p> On 11th November 1942, Lindsay wrote (Wayman, p.331) to Eamon de Valera with the specific suggestion that Armagh and Dunsink could be joined in a venture to support astronomical work at Boyden Observatory, regarded as the Southern observing station of Harvard College Observatory, which was formerly in Peru, but moved to South Africa in 1927. The particular intention was to obtain photographic material that could be brought back to Ireland for measurement and analysis. This had always been the modus operandi for those at Harvard interested in southern hemisphere material, especially Professor A. H. Shapley and the Gaposchkins. Using material from Peru, the Henry Draper Catalogue had included the southern hemisphere, and from plates of the Magellanic Clouds Henrietta Leavitt had, in 1912, discovered the period-luminosity relation of cepheid variable stars (Leavitt, 1912). 
+            </p>
+          <p> Lindsay suggested as early as 1942 the construction of a modern telescope which could be jointly owned by Armagh, Dunsink, and Harvard and it soon became clear that the Schmidt principle should be the basis of such a photographic telescope. James Baker of Harvard at that very time was examining the possibility of the so-called Schmidt-Cassegrain optical systems for large astronomical cameras. By the combination of two mirrors of similar curvature, a concave primary and a concave secondary, Baker showed that the advantages that could be obtained over the single-mirror Schmidt system were flatness and accessibility of the field and shorter tube-length in comparison with focal length. 
+            </p>
+          <p> Eamon de Valera, in due course, incorporated Lindsay 's suggestions in his provisions for that part of the Dublin Institute for Advanced Studies that became the School of Cosmic Physics, with three Senior Professors in the general areas of astronomy, cosmic ray studies, and geophysics including meteorology. The necessary Establishment Order founding the School went through Dail Eireann in March 1947, not without birth-pains (Wayman, p.334). Due to the importance of Shannon as a transatlantic air terminal, emphasis was put on the science of meteorology as being necessary for Ireland. In the event, meteorological science has not been followed in the School in any academic sense; the emphasis of the Section, very successfully, has been on geophysical work. 
+            </p>
+          <p> Hermann Bruck, chosen by de Valera as the first director of the newly-organised Dunsink, while perfectly happy to be part of the 7-year old Institute, did not at first approve of Dunsink being part of the School of Cosmic Physics (Wayman, p.215). Consequently, his appointment was delayed until October 1947. Meanwhile, in April, the agreement with Harvard concerning the construction of the 'Armagh-Dunsink-Harvard' telescope by Perkin-Elmer Company of Boston was signed. Bruck, of course, had many matters on his hands, not least, from 1952, when the telescope was nearing completion, a commitment to host the International Astronomical Union General Assembly in Dublin in September 1955. 
+            </p>
+          <p> Eric Lindsay was very keen on the implementation of the ADH for a number of projects, including valuable catalogues of red0emission objects in the Magellanic Clouds (E. M. Lindsay, 1956, 1961). 
+            </p>
+          <p> The fact that a formal agreement had been established between the Northern Ireland Government and the Dublin Government was a unique achievement. Lindsay emphasised strongly the need to pursue cross-border common aims, and he tended to shrink somewhat from U.K. proposals for new astronomical facilities to be operated by several bodies jointly. He was not thoroughly immersed in the technicalities of the ADH instrument and, in discussing operational problems with me many years later, he expressed himself quite surprised that a telescope conceived in the then-modern style should produce intractable mechanical and optical problems. Those who have followed telescope construction since then, up to and including the Hubble Space Telescope, are unlikely to be so surprised. Funds were quite restricted, of course, even though the project had the full support of Harlow Shapley, Harvard 's director. It did not seem possible to obtain a permanent successor to J.S. Paraskevopoulos as director of Boyden; a succession of short-term temporary directors were appointed, so that there was no one person with an unremitting aim of commissioning the ADH, and indeed 'Paras' himself was said to have thought the former Bruce telescope mounting was overloaded by adapting it to the ADH. Technical details tended to be dealt with by the admirable Ernest Burton, long-serving mechanic and general factotum at Boyden, who grew up under the aegis of Paraskevopoulos in the early 1930's. 
+            </p>
+          <p> Erected on its barely adequate mounting, the ADH telescope produced magnificent photographs of the dense southern hemisphere Milky Way and Magellanic Cloud regions. The mounting was of 1933 design (by Fecker) and had a simple Gerrish pendulum-controlled d.c. motor drive of that era. The telescope needed careful coaxing if it were to give its best results and among the Armagh staff now is John butler who, as a research scholar at Dunsink in the period from 1965 to 1969 became one of the few who mastered its operation. David Andrews, too, staff member at Armagh since 1963, as resident Acting Director at Boyden for the period 1965-1966, had mastered the ADH and he produced, among other good data, material for his first Armagh Atlas of the Orion Region (Andrews, 1974) which was followed by a much more comprehensive second Atlas (Andrews, 1981) produced with the use of the UK Schmidt at Siding Spring and the automatic RGO 'Galaxy' machine. During his period at Dunsink Hermann Bruck had tackled many things and at least two of his assistants, Hugh Butler, followed by Michael J. Smyth, used plate material from the ADH telescope. Michael Smyth reduced cluster magnitude-colour diagrams and incorporates some ADH plates in his Edinburgh University teaching material to this day. Another important facility of the ADH telescope that was implemented from 1955 onwards was the provision of a large objective prism, enabling the star images to be recorded as tightly-packed spectra of dispersion around 250 A/mm at H-gamma. This was one of the largest prisms ever made, but, as with other features of the Boyden equipment there were problems. The telescope could not be accurately guided when the prism was on, and it was strongly suspected that the tube was overloaded by the weight of the prism and the added counterweights, although this was never fully demonstrated. 
+            </p>
+          <p> Mervyn Ellison, son of Rev. William Ellison (Armagh director 1918-1936), was director at Dunsink from 1958 up to his relatively early death in 1963 and was my immediate predecessor. He had hardly turned his attention at all to the question of the ADH and Boyden, although both Michael Smyth and he had attended some meetings of the newly formed Boyden Council. Since I had had experience at Pretoria and Cape Town from 1957 to 1960, I adopted the policy that Boyden facilities, both at the ADH and the 60-inch reflector, ought to be utilised as much as possible from both Armagh and Dunsink. With the help of John Butler, Brendan Byrne, Brendan Jordan and others at Dunsink, and with co-operation from Eric Lindsay and David Andrews at Armagh, a certain amount was achieved during the period 1965-1972. A large body of data on faint cepheid variable stars in the Magellanic Clouds was obtained by John Butler, who successfully calibrated the plates using the 60-inch reflector, and many new light curves were published (Butler, 1976, 1978; Wayman et al., 1984). This material led, too, to a useful discussion of rate of change period of variable stars in both Magellanic Clouds, a unique body of data (Deasy and Wayman, 1986). 
+            </p>
+          <p> However, support from Harvard disappeared during the period of increasing opposition to the overtly pro-apartheid regime that set in in South Africa from the time of the establishment of the Republic there in 1960. Harvard was replaced by the Boyden Council by the Smithsonian Institution. Donald H. Menzel, as an Emeritus Professor, and a very eminent senior astronomer, represented the Institution on the Council on behalf of Fred Whipple. The incorporation of the University of the Orange Free State at Bloemfontein, as the local university, into the Boyden Council in 1966 and the installation of Alan Jarrett, formerly at Queen 's University, Belfast, as director in 1968, was necessary in order to provide greater permanency, stability, and funding, but, in a climate of increasing difficultly in operating in South Africa, really satisfactory progress at Boyden became impossible. After Eric Lindsay 's sudden death in 1974, the Smithsonian withdrew completely and the informal Boyden Council was dissolved. The optical parts of the ADH telescope are in storage at Dunsink. In 1977 Mart de Groot and I made strong efforts to have them adopted in a possible new telescope at the San Pedro Martyr observatory site of the National University of Mexico near Tijuana, Baja California, but it was found not to be a viable project; the cost of incorporating them would be greater than the cost of purchasing a complete conventional telescope of more effective design off-the-shelf. 
+            </p>
+          <p> With the advent of SERC facilities in Australia, La Palma and Hawii, and with the possibility of incorporating the Republic of Ireland in the Spanish Institute of Astrophysics of the Canaries in 1979, a whole series of other doors have opened. There have been some joint technical projects in recent years; Mart de Groot continues to give good advice at the Governing Board of the School of Cosmic Physics, as did Eric Lindsay before him, and he also serves on that Board 's Advisory Committee for La Palma and the HST. At present he is Chairman of the Royal Irish Academy National Committee for Astronomy that as an Academy committee takes the whole of Ireland as its domain; I continue to serve on the Board of Management at Armagh Observatory and Planetarium, as well as (since 1965) on the Board of Governors and Guardians of Armagh Observatory, and I am very proud of being able to do so. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/135.00000</textSigle>
+            <title>History Ireland</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>L. M. Cullen</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-009$A">
+          <head>
+            <hi rend="bold"> Legal pogrom </hi>
+          </head>
+          <p> Catholics were in a novel position from late 1766. The attempted legal pogrom in Munster (on the pretext of suppressing Whiteboy activity) which had taken the life of Father Nicholas Sheehy and three minor gentlemen in 1766, was halted within the year. The collapse of the case against forty other propertied Catholics, largely through Edmund Burke 's masterful organisation of the defence team and background lobbying, may have led some like O'Leary to challenge the local establishment recklessly. It was probably fear in the wake of the traumatic year 1766 that accounted for the opposition of the Derrynane O'Connell family to the 1767 marriage of a daughter, Eibhlín Dubh Ní Chonaill, to O'Leary, an assertive young army officer just returned from overseas. It is reflected too in the Baldwin-O'Leary tension that briefly surfaces in the poem: James Baldwin, who had married a sister of Eibhlín Dubh, may have shared the misgivings of other Baldwins who aligned themselves against O'Leary in 1771. 
+            </p>
+          <p> O'Leary 's return in 1767 occurred at that decisive moment when old fears from the past and a new sense that Catholics could successfully be assertive were simultaneously in the air. Just as the Sheehy episode in 1766 marked the termination of an era of political persecution in Tipperary and north Cork, so too can the O'Leary episode in 1773 be regarded as a dénouement to tensions in west Cork. The reluctance to proceed against O'Leary at the assizes after the fairly routine step of lodging bills of indictment with the grand jury in August 1771 shows how times had changed: within a major county, the anti-Catholic faction was hesitant and could no longer count on general backing. A bill of indictment required the oaths of at least twelve grand jurors, but became effective only if a majority of jurors in full session returned it as a 'true bill'. In some respects the two periods mark the point at which more virulent forms of local anti-Catholicism became a discredited political commodity. 
+            </p>
+          <head>
+            <hi rend="bold"> O'Leary 's horse demanded for <amp> pound sign </amp> 5 </hi>
+          </head>
+          <p> Despite suggestions of rivalry in love or in horse racing, the background to the O'Leary story was entirely political. The Muskerry Constitutional Society was founded in July 1771 and sought <quote> 'complaints which any injured poor persons of the barony of Muskerry may present to them' </quote> in an <sic> advertisment </sic>
+            <corr> advertisement </corr> in the <hi rend="italic"> Cork Evening Post </hi> on 18 July. After its next meeting on 7 August, it again sought 'communications' from the public in the <hi rend="italic"> Cork Evening Post </hi> of 19 August. The same issue contained a reply from O'Leary which stated that he had been charged <quote> 'with different crimes by different persons', </quote> and declared his readiness to stand trial on them. Therefore, by August, the Society were seeking specific evidence against O'Leary (though they may not necessarily have had him directly in mind in early July) in order to substantiate the charges in bills they were preparing. Significantly, the dispute with the magistrate Abraham Morris occurred on 13 July, according to a later Morris statement of 7 October, which again appeared in the <hi rend="italic"> Cork Evening Post. </hi> Thus the founding of the Society with the politically resonant term 'Constitutional' in its name and the O'Leary intervention with Morris occurred in the month preceding the assizes. According to O'Leary 's later declaration, he had gone <quote> 'to apply to Mr Morris as magistrate relative to some law proceedings' </quote> on 13 July. O'Leary probably had then made himself obnoxious by his interest in some cases pending at the assizes in a county already notorious for its magistrates ' readiness to keep the penal laws alive. Morris, provoked by O'Leary 's assertiveness and intending to put him in his place, demanded his horse in exchange for <amp> pound sign </amp> 5. Significantly, O'Leary 's brashness seems to be hinted at in the reaction two years later on receipt of news of his death by Daniel O'Connell, uncle to Eibhlín Dubh, grand uncle of the Liberator and an officer in French service. He had met O'Leary in Ireland before his death, and recalled that <quote> 'the short acquaintance I had with him gave me a more favourable opinion than I had at first conceived of him'. </quote>
+          </p>
+          <head>
+            <hi rend="bold"> Seizure of a gun </hi>
+          </head>
+          <p> O'Leary 's alleged seizure of a gun from Morris was one of the charges against him in 1771. Morris, a near-neighbour of O'Leary 's in the vicinity of Macroom, was a supporter of the political interest headed by the Earl of Shannon, County Cork 's premier grandee, which had driven the anti-Catholic campaign both locally in the 1760s and in the 1762 and 1764 sessions in parliament. Morris was not high sheriff in any year in the early 1770s, contrary to what is said in modern accounts. However, he had been high sheriff in 1760, and his nephew was to be high sheriff in 1782 and Shannonite MP in the 1790s. 
+            </p>
+          <p> Morris 's and O'Leary 's statements and counter statements feature the question of a gun. According to O'Leary, Morris and a servant pursued him bearing firearms; the servant discharged a gun which O'Leary then seized and surrendered to another magistrate. According to Morris, O'Leary seized the gun, and made off with it. The import of this was grave. O'Leary had violated the penal laws by even holding a gun; more seriously he had allegedly acquired it by force in the presence of Morris, a magistrate. Morris 's offer of a reward for the apprehension of O'Leary on 7 October 1771 was followed by a reply by O'Leary dated 19 October, both published in the <hi rend="italic"> Cork Evening Post. </hi>
+          </p>
+          <p> The events of July and August 1771 were heavily influenced by the knowledge that the summer assizes were due to begin on 23 August. The Muskerry Constitutional Society 's declaration of 15 August 1771 was signed among others by five clergymen, three Townsends (two of them clergymen), and Sir John Conway Colthurst, a rather cretinous parliamentary follower of Lord Shannon, of whom it was noted in a 1773 list of MPs that <quote> 'he will always obey him (Shannon), a mere paltry fellow'. </quote> The fact that the events did not attract straightforward reporting but were communicated by advertisements suggests the conduct of a highly personalised vendetta on both sides. If there had been a hearing at the assizes on foot of 'true bills', Morris would have referred to it in his statement in the autumn. Morris and the Muskerry Constitutional Society could only claim that bills of indictment had been lodged. While these were potentially damaging to a man 's character, they did not constitute authority for referring the charges to the assize judges. Moreover, there would be no further assizes till the spring. In offering rewards in the autumn, Morris and the Muskerry Constitutional Society seem to have gone beyond strictly legal limits in attempting to initiate further action well ahead of the March assizes of 1772. 
+            </p>
+          <head>
+            <hi rend="bold"> Worse than an outlaw </hi>
+          </head>
+          <p> The case had a number of intriguing features. O'Leary was never technically outlawed; Daniel O'Connell, the Liberator, was certainly wrong in claiming in 1834 that O'Leary was the last man shot as an outlaw in Ireland. In a sense the actual situation was even worse: if not outlawed under due legal process, O'Leary was subjected to an irregular attempt at outlawry not by a grand jury but by a tiny coterie, a step beyond the powers of individual magistrates. While bills of indictment had apparently been lodged, O'Leary repeated his August offer to stand trial in October 1771. This offer is crucial to understanding events at that time. The charge that O'Leary was <quote> 'under arms and on his keeping' </quote> did not rest on a grand jury verdict, but was fabricated by Morris and the Society in October. As the law stood, a Catholic carrying arms would in itself warrant action by a magistrate because he would be committing an offence at the time of arrest. In the absence of a 'true bill' to answer, the attempt to represent O'Leary as an outlaw went both beyond the facts and the magistrates ' legal competence. Morris 's action in October was at best on the margins of legality. 
+            </p>
+          <p> This situation produced a legal stalemate. Morris and the Muskerry Society were unable to turn their bills of indictment into 'true bills', while on the other hand O'Leary lived under the shadow of a trial or of arrest. While still free to come and go, O'Leary must have been apprehensive that Morris or others would attempt to arrest him on flimsy authority. He remained at liberty for two years, coming and going with impunity, and no effort was made to arraign him in court. There were no known legal developments at either the spring or summer assizes in 1772 or in the early spring of 1773. In 1773 the spring assizes in Cork began on 22 March and ended on 29 March. On 15 April, Daniel O'Connell commented that he was <quote> 'glad to hear our friend Arthur arrived safe' </quote> implying that nothing untoward had occurred at the assizes. If O'Leary was in Cork city at the time of the assizes, he may have been there either to answer a case if 'true bills' emerged, or else to taunt his enemies for failing to get grand jury support. 
+            </p>
+          <head>
+            <hi rend="bold"> O'Leary shot dead </hi>
+          </head>
+          <p> Relations between Morris and O'Leary now deteriorated to a new nadir, with either party (we do not know which) <sic> precipating </sic>
+            <corr> precipitating </corr> the final tragedy. It is vitally important at this juncture to appreciate that Morris was not the high sheriff. Very probably, the proceedings at the spring assizes had been unseemly, and Morris may have kept the discredited charges alive. O'Leary 's death in 1773 was, however, in part of his own making: he took the initiative in seeking Morris out, and the folklore suggests that his intention was to kill him. In the event O'Leary himself was shot dead in suspicious circumstances by soldiers accompanying Morris. A coroner 's jury in June 1773 found Morris guilty of murder. 
+            </p>
+          <p> O'Leary had obviously not lacked backing. In July 1773 a large string of political notables offered rewards for discovery of the person or persons who fired three shots at Morris at the window of his lodgings in Cork, but this was exclusively from the Shannon interest. Others, notably the powerful gentry interest of north Cork and the parliamentary members for the city, were conspicuously absent from the list. 
+            </p>
+          <p> The furore over the shots allegedly fired at Morris in July was not generated by the need to protect his person from physical assault but rather to mount a legal defence (there is no evidence that Morris was seriously at risk, and even less evidence for the 1830s view that O'Leary 's brother had fired the shots). Urgency was imparted by the fact that the assizes were due to begin on 28 August. The coroner 's inquest had already decided that O'Leary had been murdered. Ironically whereas O'Leary had long faced the risk of a trial at the assizes, it was Morris who was finally tried, and on the much more serious charge of murder. In July the outlook for Morris did not seem good. He was stigmatised as the leading figure in a singular vendetta which had never enjoyed the backing of 'true bills' of indictment and the coroner 's jury 's decision in June was very damaging. Accordingly it was necessary for Morris 's defence to represent the alleged attempt on his life as serious; by deeming that rewards were necessary at national as well as local level, the murder case, it could then be argued, was not a dispute in which a magistrate had behaved badly but one in which he had lived under long-standing murderous threat. These considerations would influence the opinion of many attending the assizes, and could well weigh forcibly on the mind of a petty jury selected for the trial, especially if the full weight of the Shannon interest was engaged in lobbying for Morris. 
+            </p>
+          <p> These convoluted matters finally came to an assizes hearing in September 1773 when Morris was tried. It was a singular occasion as the accused was a magistrate. His final acquittal, given pressure from the Shannon faction, could plausibly suggest improprieties in the court proceedings. The suggestion in the poem of the widow 's intention to seek justice in London is not irrelevant: the case against O'Leary had never been backed by the full grand jury and the notorious rewards offered in October 1771 were unwarranted, arising not from grand jury true bills of indictment, but from a novel twist of continued law-breaking introduced by Morris and his partisans. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/136.00000</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author />
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-005$A">
+          <head> CHANGING STATES transformations in modern Irish writing <hi rend="bold"> Robert Welch </hi>
+          </head>
+          <head> Routledge </head>
+          <p> The most annoying aspect of this book is that it claims to be, or aims to be, something which it is not. To read the blurb one would be led to believe that Prof Welch has constructed a system in which the change from Gaelic to 20th-century, post-industrial culture in Ireland 's literature is examined and the effects of that change shown. Hence, the reader goes through the various chapters with this in mind, only to discover that there is no common thread running through the work. What we have, in fact, is a collection of interesting and enjoyable essays on Welch 's top 11 authors, with introductory chapters and a conclusion tacked on to give the book some sort of <hi rend="italic"> raison d’être. </hi>
+          </p>
+          <p> This, to say the least, is a frustrating experience. At no time does Welch coherently, sufficiently, or logically develop his belief that the loss of Irish in some way deprives the Irish people of a unique <hi rend="italic"> Weltanschauung. </hi> The Irish language, which appears to be central to his argument, drifts in and out of the collection like a badly-directed actor – now you see him, now you don't. His belief that Irish culture is <quote> "deeply divided" </quote> because of the loss of the Irish language may or may not be true, but Welch never bothers to explain why he thinks it is. Indeed, one could argue that it is very untrue. 
+        </p>
+          <p> Contemporary Irish culture is predominately expressed in English and ruled by it. The gap between culture in Irish and culture in English is so great that even the analogy of David and Goliath seems inadequate in describing it. A gaggle of Goliaths versus a one-armed, one-legged, one-eyed David would seem more appropriate. 
+        </p>
+          <p> The unrelenting attacks upon Irish as the <hi rend="italic"> Zeitgeist </hi> of nationalist Ireland, launched by the many cultural nationalists, have rendered redundant much of Welch 's argument that Irish is <quote> "a cultural system, full of signs and referents which call up associations and relations that are rooted in the past and are activated by the disposition and evocative power of the words we use". </quote> These attacks have centred on stressing the everyday commonality of Irish as a language within the Gaeltacht, in an attempt somehow to remove Irish from the 'political arena' and denationalise it. As a result, Irish has been reduced from being a language which 'embodies a national ideal' to being simply a language which 'ought to be protected'. By continually stressing the language 's banality, those who wish to protect it as a cultural artefact run the risk that any romantic notions concerning the language as being the soul of Ireland are blown away. 
+        </p>
+          <p> Welch argues that <quote> "The Irish ... committed linguistic suicide." </quote> Perhaps. But suicide implies that they thought they were giving up something which was valuable, that there was a <hi rend="italic"> loss </hi> involved. The Irish, being a pragmatic bunch, may not have seen it that way and, if we are perfectly honest, still do not see it that way. Many, I suspect, would identify with O'Connell 's pragmatism: 
+        </p>
+          <p>
+            <quote> I am sufficiently utilitarian not to regret its gradual abandonment ... Therefore, although the Irish language is connected with many recollections that twine around the hearts of Irishmen, yet the superior utility of the English tongue, as the medium of all modern communications, is so great that I can witness without a sigh the gradual disue of Irish. </quote>
+          </p>
+          <p> Recent opinion polls would indicate that the English-speaking Irish may let loose the occasional sigh for the language, but are still very reluctant actually to do anything to ensure its survival. 
+        </p>
+          <p> The pressure to acquire English, now and in O'Connell 's time, means that communities did not commit suicide so much as make a conscious, if forced, decision to swap one language for another. There is no evidence to suggest that this loss has ever really bothered the Irish people to the extent that those of us who speak the language would like to think. The success of the Gaelic League at the turn of the century in English-speaking areas was not mirrored in Irish-speaking areas, and the lack of a widespread non-state language movement in most Gaeltacht areas would seem to prove further that the language holds little of value for many of its native speakers. 
+        </p>
+          <p> The difference in outlook in Donegal between Irish-speaking Bunbeg and English-speaking Bundoran is zero. There is no way one could seriously argue that if Irish were to cease being spoken in Bunbeg tomorrow the village would in some way be transformed into a pumpkin. No one would notice. The superstitions, folk-stories and lore of the Gaeltacht died with de Valera 's comely maidens. While Welch argues that the poets Nuala Ní Dhomhnaill and Michael Hartnett see the loss of Irish as <quote> "a cataclysmic <sic> clow </sic>
+              <corr> blow </corr> to the psyche of the Irish people in that it ripped out and tore asunder all the secret interiors that sponsor the manifold activities that go to make up a culture" </quote> , it is not true of society in general. 
+        </p>
+          <p> There is also something very odd in seeing Máirtín Ó Cadhain and Seán Ó Riada bracketed with the likes of W B Yeats, George Moore and James Joyce. They may have lived in the same country but they came from different worlds. O Cadhain was of peasant Connemara stock, a committed republican and supporter of the Irish language. Moore, Joyce and Yeats had absolutely nothing in common with him other than the business of writing. They belonged to an urban, anglicised and anglophile <hi rend="italic"> bourgeoisie </hi> more interested in the pettier points of social status than the day-to-day reality of surviving. 
+        </p>
+          <p> Their interest in Irish was fleeting — if that long. They didn't need the language, they didn't use the language and to imply — as Welch does — that their work in some way benefited from the tension between two languages and two cultures is wrong. Their work relied upon their imaginative ability in English and their view of literature was moulded by Victorian values. Yeats ' summation of Irish as his national tongue yet English his native tongue neatly encapsulates his attitude to Irish — and that of his class. What O Cadhain and his contemporaries wanted from, and demanded of, literature was far removed from what the middle-class and pre-Easter 1916 generation of English literature wanted. 
+        </p>
+          <p> What Welch does succeed in doing is to muddy the waters every once and a while by dropping the occasional Irish pebble into his English-language pond. Synge knew Irish, Heaney knows Irish and so does Friel. Fair enough; but can they all be tied together by this very thin thread? What Synge wrote about is not what Friel writes about and Heaney 's interest in Irish is peripheral. Would he be any less a poet had he never heard a word of Irish? Do you need Irish to watch one of Synge 's plays or Friel 's, or to read and understand Heaney 's work? 
+        </p>
+          <p> No. 
+        </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/136.00001</textSigle>
+            <title> Fortnight</title>
+            <domain>PopHum</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author />
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2B-005$B">
+          <head> HILLSBOROUGH In the Churches at Christmas </head>
+          <p> The four Sundays of Advent are days of preparation for the celebration of Christmas and Christ 's coming into the world. During those days there are many opportunities to reflect on God 's love for the world and on the Light of Christ that still shines in many places of darkness. 
+        </p>
+          <p> The 1992 Advent Sermon at Hillsborough Parish Church will be delivered by the Bishop of Down and Dromore, the Rt. Rev. Gordon McMullan. The sermon, entitled "Going with the grain", will look at the human implications of the free market economy. That will be at 11.00 a.m. on Sunday, 6th December. On the same evening at 7.30 p.m. the village community will come together with children from the primary school for the switching on of the Christmas tree lights in the Church Square. 
+        </p>
+          <p> During the weeks of Advent a toy collection is made for children in need. New toys are placed in the church windows and then as Christmas comes the Salvation Army distribute them to homes where toys are scarce. 
+        </p>
+          <p> On the last Sunday night of Advent, the Sunday before Christmas (20th December), the Christmas story is related in words and music and symbol in a Service of Lessons, Carols and Christingles. The service comes to an end as the children carry lighted Christingles out into the darkness of the winter night and so herald the coming of the Light of Christ into the world. Christmas is now very near. 
+        </p>
+          <p> Christmas Day begins at Hillsborough on the stroke of midnight. Then the bells ring out in celebration of the Day that Christ was born. Worship continues that day with services at 8.30 a.m., 11.00 a.m. and 12 noon. 
+        </p>
+          <p> My message to people this year is in this Advent Prayer: 
+        </p>
+          <p>
+            <hi rend="bold"> Grant, o God, as we rejoice in the hope of the coming of our Saviour Jesus Christ so we may prepare the way for His Coming again by the joyful service and the faithful witness of our daily lives, and May the God of hope fill you with all Joy and Peace as you trust in Him, so that you may overflow with hope by the power of the Holy Spirit. Amen. </hi>
+          </p>
+          <head> PRESBYTERIAN CHURCH </head>
+          <p> Christmas - the season of celebration and thanksgiving, when we remember the birth of Jesus! It is a wonderful time, for the church and the community, but there is always the danger that we allow the traditional festivities to blind us to the awful surroundings that were that stable in Bethlehem and the dreadful plight of millions who are starving in our world today. Even in the midst of the present recession, the church needs to confront people with the human tendency towards greed an its striking contrast to God 's pattern of giving. 
+        </p>
+          <p> The Congregation of Hillsborough Presbyterian Church will once again this year be taking a special offering for World Development throughout the Christmas period. In recent years over <amp> pound sign </amp> 2000 has been raised annually and we hope to exceed that in 1992. But we hope to do much more. the months leading up to Christmas we have been reflecting on some of the barriers that exist in today 's world and how they can be crossed "in Christ". Our prayer is that in our own lives, in the life of our community and world, the message of the Angels will become a reality this Christmas: <quote> "Glory to God in the Highest and on earth Peace, Goodwill towards men." </quote>
+          </p>
+          <p> The Christmas activities and services in the congregation are as follows: </p> Saturday, 5th December - Senior Citizens Party. 
+
+            <p> Saturday, 12th December – Sunday School Parties. 
+            </p>
+          <p> Sunday, 20th December – Family Services at 10 a.m. and 11.30 a.m. with music from the Junior Choir Festival of Lessons and Carols by Candlelight at 7 p.m. by the Senior Choir. This Service will be followed by a supper served by the Young Women of the Congregation. 
+            </p>
+          <p> Thursday, 24th December - Christmas Day Family Service at 10.30 a.m. 
+            </p>
+          <head> ELIM PENTECOSTAL CHURCH </head>
+          <p> a few minutes from the village of Hillsborough on the Moira Road is the Elim Pentecostal Church. 
+            </p>
+          <p> Often referred to as the Church with a difference because of its lively praise and worship and belief that the church which is Christ 's body, should care for the community spirit, soul and body. In doing so we hope to reflect God 's love and His comprehensive, caring nature. 
+            </p>
+          <p> The spiritual needs of members are met in regular Sunday and mid-week services. Activities arranged to cater for other needs include Youth Together (Sunday School), Youth Ministries, Boys Brigade, Girls Brigade, Teens Youth Club, Nursery School/Playgroup, Mums and Toddlers and a Coffee shop. 
+            </p>
+          <p> The elderly have not been forgotten with visits in their homes from our team of Home Visitors, a weekly craft class and monthly Luncheon Club. Adjacent to the church complex is one of our Elim Nursing Homes "Lisadian House" which provides an efficient, non-acute care unit for 29 frail and elderly residents in single bedrooms. 
+            </p>
+          <p> Our aim is to demonstrate the love of Christ in every way possible to the local community in which we work and worship. Christmas is a time of joy and a time of exchanging gifts. 
+            </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/137.00000</textSigle>
+            <title>Sunday Life</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-002$A">
+          <head> How the mighty are humbled </head>
+          <p>
+            <hi rend="bold"> Pomp and Circumstance missing. Extravagance spared. No horse-drawn carriages. No expensive wedding gowns nor endless trains. No 21 gun salutes. Just another wedding on a cold December Saturday. <hi rend="italic"> Does the marriage of Princess Anne in Crathie Church mark the start of a new era for British Royalty? </hi>
+            </hi>
+          </p>
+          <p> Who would have believed that the people in that Scottish church yesterday were also the stars of so many spectacularly dignified State occasions? </p>
+          <p> For the Royal family, it is indeed a long, long way from the glittering splendour of St Paul's Cathedral or Westminster Abbey, to a cramped kirk in the north of Scotland. </p>
+          <p>
+            <hi rend="bold">
+              <hi rend="italic"> If the mighty have not fallen, they are certainly humbled. </hi>
+            </hi>
+          </p>
+          <p> As the Queen watched yesterday 's short ceremony, she must surely have mused upon the recent fortunes, or rather misfortunes, of her children. </p>
+          <p> So, too, must her sons, Andrew and Charles, as they listened to the words of their sister 's second betrothal. </p>
+          <p> Where the Monarchy goes from here depends upon where it choses to take itself. It is not the media's probing nor the public's fault that things have got out of hand. </p>
+          <p>
+            <hi rend="bold">
+              <hi rend="italic"> The actions of the Royals themselves are responsible for the change in the public 's perception of them and the very real threat to the future standing of the Monarchy itself. </hi>
+            </hi>
+          </p>
+          <p> From Andrew and Sarah Ferguson to Charles and Diana Spencer, too many ordinary frailties and failings have been exposed already. </p>
+          <p>
+            <hi rend="bold">
+              <hi rend="italic"> The Emperors have not quite lost their clothes but they are in need of a good dry-clean. </hi>
+            </hi>
+          </p>
+          <p> That the Queen and her family are mere mortals like the rest of us was never so apparent as now. Things royal can never be the same again. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/137.00001</textSigle>
+            <title>Sunday Life</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-002$B">
+          <head> Now is the moment to press ahead </head>
+          <p>
+            <hi rend="bold"> JIM Molyneaux is set to give the Prime Minister a piece of his mind when the pair meet this week. </hi>
+          </p>
+          <p> The Unionist leader is fed up to the teeth with the Government 's kid glove handling of the IRA and Sinn Fein. </p>
+          <p> And his Democtratic Unionist colleague, Dr Ian Paisley - who is also demanding talks with the PM - feels likewise. </p>
+          <p> Mr Major has no one but himself to blame if he is sent reeling from a Unionist backlash against the <quote> "special understanding" </quote> they have with his Government. </p>
+          <p> He promised before Christmas that if the Provos kept shooting he would crack down hard on them. </p>
+          <p> Well, we 're half way through March, the guns are still blazing away and the security situation still leaves a lot to be desired. </p>
+          <p> Much plain speaking will be done at Downing Street in the coming days. </p>
+          <p> Messrs Molyneaux and Paisley, will demand to know just what the British and Irish governments are playing at. </p>
+          <p> They will rightly argue that, as London and Dublin dither, decent people on both sides of the religious divide are suffering at the hands of so-called loyalist and IRA paramilitaries. </p>
+          <p> Even the double mortar attack on Heathrow airport failed to bring the security response necessary to stop it happening again. </p>
+          <p> By all accounts the Provos and Sinn Fein have rejected the peace accord. </p>
+          <p>
+            <hi rend="bold">
+              <hi rend="italic"> So now is the time to press ahead - on the security and political front. </hi>
+            </hi>
+          </p>
+          <p> Jim Molyneaux, Ian Paisley, John Hume and John Alderdice are not accountable to any armed factions. </p>
+          <p> The politicians who are have no one to blame but themselves if a settlement is reached over their heads. </p>
+          <p> And the sooner that comes about the better. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/137.00002</textSigle>
+            <title>Sunday Life</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-002$C">
+          <head> Worse than animals </head>
+          <p>
+            <hi rend="bold"> The behaviour of loyalist paramilitaries in interrogation centres is nothing short of disgusting. </hi>
+          </p>
+          <p> They are reported to be behaving worse than animals during questioning by RUC detectives. </p>
+          <p> Now the police are hitting back. </p>
+          <p> They have shown they are prepared to bring them to court on indecency charges. </p>
+          <p> Boasting of such repugnant behaviour while hiding behind the cloak of anonymity is one thing. </p>
+          <p>
+            <hi rend="bold">
+              <hi rend="italic"> Having your name published after a court case is quite another. </hi>
+            </hi>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/137.00003</textSigle>
+            <title>Sunday Life</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-002$D">
+          <head> Will Aras soon get a new tenant? </head>
+          <p> AT a time when Ireland is facing a period of renewed uncertainty over the peace process, the entire island clearly needs as much long-term political stability as possible. </p>
+          <p> Many people will therefore have been alarmed by speculation that President Mary Robinson may stand down when her term of office expires in 1997. </p>
+          <p> By common consent, Mrs Robinson has been one of the most outstanding presidents in the history of the state. </p>
+          <p> Her election four years ago may well have been an act of political serendipity, in that only a self-inflicted blow prevented Fianna Fail 's Brian Lenihan from securing the highest office in the land. </p>
+          <p> However, having topped the polls against all the odds, Mrs Robinson immediately set out to re-define the position of the presidency in modern Ireland. </p>
+          <p> She has succeeded in a way few could have predicted, and has helped to transform the image not only of her office but also of her country. </p>
+          <p> Mrs Robinson has travelled to every corner of Ireland, and has proved a particularly welcome visitor on this side of the border. </p>
+          <p> She has managed to establish a rapport with unionists which would have been almost unthinkable in the past, and also found the time to meet with Gerry Adams in west Belfast. </p>
+          <p> In addition, northerners from a wide variety of backgrounds have accepted invitations to attend functions at her official residence in Phoenix Park. </p>
+          <p> Mrs Robinson has also become a major figure on the world stage through her trips to Europe, the USA, Asia, Australia and most poignantly Somalia. </p>
+          <p> In particular, her discussions with Queen Elizabeth at Buckingham Palace were of huge symbolic importance. </p>
+          <p> She will undoubtedly add to her long list of achievements before her term of office is completed. </p>
+          <p> Were she to allow her name to go forward for re-election, the outcome of the poll would be a mere formality. </p>
+          <p> Indeed, Fianna Fail and Fine Gael might well feel there would be little point in fielding a candidate against Mrs Robinson. </p>
+          <p> The possibility that she might rule herself out of the race has not so far been widely considered. </p>
+          <p> However, the fact is that Mrs Robinson has not yet committed herself to seeking a second seven-year spell at the Aras. </p>
+          <p> Just days ago, one of the USA 's most influential newspapers, the Boston-Globe, suggested that the president was a strong contender to emerge as the next Secretary General of the United Nations. </p>
+          <p> The outgoing Secretary General, Boutros Boutros Ghali, who is due to retire in 1996, had lengthy private talks with Mrs Robinson only last week. </p>
+          <p> Some sources have also suggested that the president could be in line for a seat at either the European Court of Justice in Strasbourg or the World Court in the Hague. </p>
+          <p> She may even feel she has had enough of the limelight, and want to spend more time with her family at their new home in Co Mayo. </p>
+          <p> Mrs Robinson is her own woman and must make up her own mind, but the simple truth is that Ireland needs her in the Phoenix Park. </p>
+          <p> She had accomplished much, but much still needs to be done. A second term would allow her a unique opportunity to review and develop the constitutional role of the presidency. </p>
+          <p> Her continued presence at the head of the state would also reassure unionists during what still seems likely to be a crucial period in the history of the island. </p>
+          <p> For these and many other reasons, Mary Robinson must be the president to lead Ireland into the 21st century. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/137.00004</textSigle>
+            <title>Sunday Life</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-002$E">
+          <head> Unsporting thought of a petty mind </head>
+          <p> The news that Unionist MP John Taylor is delighted, for petty political reasons, when Ireland lose international rugby matches is most illuminating. </p>
+          <p> In the first place, the expression on his face when the Irish gained their famous victory over England at Twickenham last month would have been priceless. </p>
+          <p> Indeed, had the boys in green been aware of their ability to annoy Mr Taylor simply by winning matches, the Triple Crown, Five Nations Championship and Grand Slam would no doubt already be in the bag. </p>
+          <p> On a more serious note, the Strangford MP 's views are an insult to the many Ulster Protestants - including RUC members - who have represented Ireland with such distinction over the years. </p>
+          <p> Almost every major sport, with the obvious exception of soccer, is organised on an all-Ireland basis. </p>
+          <p> Friendships made on the field of play frequently cut across political and religious barriers in a way which Mr Taylor - whose first sporting love is Glasgow Rangers FC - clearly cannot comprehend. </p>
+          <p> It may not be long before he issues a statement complaining about the fact that Ireland play on a green pitch. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/137.00005</textSigle>
+            <title>Sunday Life</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-002$F">
+          <head> Airport delays mean more than murders </head>
+          <p> THE IRA has, according to the evidence of the past few days, adapted the nation of talking peace and carrying a big stick. </p>
+          <p> Three attacks on Heathrow Airport, the possibility of further 'spectaculars' and now the sweet-sounding statement about peace show that the Provisionals are just as capable as anyone else of looking in two directions at the same time. </p>
+          <p> The Heathrow attacks were not just designed to hit the headlines. The fact that three were launched on such a sensitive target served to embarrass the British security forces. The IRA seemed to send a mocking signal with the fact that none of the mortars exploded. The next time things could be different. </p>
+          <p> It proved total security is a myth and that the IRA retains the abiltity to strike a range of targets. It also served to make ordinary members of the British public feel threatened by the IRA's bombing capacity. </p>
+          <p> Before, it was the City of London and the London Underground. Now, it is London's main airport. Even Queen Elizabeth is threatened. She landed at Heathrow during one of the alerts. </p>
+          <p> For many ordinary British people, the bombers of the IRA must seem to be everywhere. This, in turn, will filter through the British political system and increase pressure on the establishment to divert from its present course. </p>
+          <p> As always, the fact that lives have been lost in Northern Ireland during the airport bombings has been all but ignored. Delayed planes at Heathrow mean more than dead police officers or civilians across the Irish Sea. </p>
+          <p> Last night's underlining of the republican movement 's proclaimed dedication to peace must be seen in the context of the violence of recent days and it demands a response. </p>
+          <p> In an interview given to this newspaper by Taoiseach Albert Reynolds, the IRA has its answer. The declaration signed in Downing Street should be enough to enable an immediate cessation of violence. </p>
+          <p> Then, and only then, can initial contacts with other parties and the Irish government be made through a Forum For Peace And Reconciliation which will pave the way to full inter-party talks and negotiations with the British. </p>
+          <p> Mr Reynolds and Mr John Major have declared their commitment to the declaration and the process it initiates in such a way that backing down is not on the agenda. The IRA should recognise that. </p>
+          <p> It should be made clear that participants in future talks do not, as the taoiseach makes clear in the Irish News today, need to endorse every syllable of the Downing Street document. </p>
+          <p> But what they should be in no doubt about is the fact that since December 15 and the agreeing of the declaration, both governments have gone further than either - and especially the British - has done to date. It is unlikely that more significant movement is likely. </p>
+          <p> The Provisionals are great believers in the 'one last push' theory of violence. </p>
+          <p> To believe that now would be a deadly mistake which will be measured only by the size of Northern Ireland 's death toll. </p>
+          <p> If that theory held any water, why have centuries of conflict and, more recently, 25 years of vicious violence not delivered Utopia? </p>
+          <p> The two premiers have stressed their belief that the airport bombers and all the rest of them are tragically mistaken if they think that another London blitz will change the status quo. </p>
+          <p> Progress will come but only via constitutional politics. To Sinn Fein, the door is open. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/138.00000</textSigle>
+            <title>Munster Express</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-009$A">
+          <head>
+            <hi rend="bold"> BUY IRISH AND BUY LOCAL THIS CHRISTMAS </hi>
+          </head>
+          <p> In an era, when the level of international trade reaches new heights, the facility to buy overseas products is easier than ever. But should we not think first before we buy? </p>
+          <p> Local jobs should be supported where possible. </p>
+          <p> Here in Waterford, we have many fine industries producing excellent products that deserve patronisation this Christmas. For those on a higher budget, you could buy glass from Waterford Crystal. Children could be bought Milton Bradley toys. Individual gifts could be purchased that are locally made, whether by local crafts people. The emphasis could also be on local food and drink. We should try and keep business and employment in the area, where possible. </p>
+          <p> According to recent statistics released by the Waterford Trades Council last month, <amp> pound sign </amp> 6 is spent on imported goods for every <amp> dollar sign </amp> 4 spent on Irish made goods. If the balance could be split the other way, 30,000 to 40000 jobs could be created. Other countries are very proud of their home produce. The French rave about their wonderful food and their great cars, which they buy more than foreign ones. In England, foreign goods have tended to be very popular, has the same trend started here, with goods being sourced often in low cost countries? </p>
+          <p> The large preponderance of foreign owned stores in Ireland in the past ten years has led to more consumer imports. </p>
+          <p> The Trades Council has advised shoppers before Christmas to ask to see the Irish made product and compare the quality and price with other goods. Positive action can be taken at Christmas time, when there is a consumer boom, to spend more on Irish and locally produced goods where possible. </p>
+          <p> We, in the "Munster Express", feel that our local advertisers also deserve support at this time of year. There is often the temptation to go to Cork or to Dublin, or even further afield as people chase bargains. This year, the big rush has been to Northern Ireland, now that we have a ceasefire. </p>
+          <p> Waterford city centre has progressed a great deal over the past decade in terms of shopping choice. It is now a truly regional shopping mecca, given the large number of shopping malls that we now have. </p>
+          <p> In line with the growth and trade in Waterford, other towns such as Dungarvan, New Ross and Carrick on Suir are making a bigger push to get a slice of the retail spend, emphasising their strengths such as parking and convenience for the shopper. </p>
+          <p> We would ask our readers to encourage their families and friends to support local retailers and local products, as the Waterford Trades Council has done. </p>
+          <p> This year could be a record Christmas in terms of spending power and should give a boost to shops, some of whom may have had a difficult year to date. </p>
+          <head>
+            <hi rend="bold"> CHARITIES DESERVE SUPPORT </hi>
+          </head>
+          <p> Local charities such as the Vincent de Paul deserve our support as well at this time of year. They are in the front line of contact with those who are badly in need of help. In last week 's paper, we related a story revealing that by the end of this year a quarter of a million pounds will be spent on its services, which included 16,000 visits. </p>
+          <p> The Lions Club appeal will also assist many needy families at Christmas, auction items of which we carry on page 29. </p>
+          <p> Bishop of Waterford, Most Rev. Dr. William Lee, has said that the increased demands on the St. Vincent de Paul Society would need to be met so that families in need could look to the future with some glimmer of hope. Contributions were never so badly needed as at present. </p>
+          <p> We would hope that the people of Waterford would support their local charities. At this time of year, many charities actively fundraise, we should encourage local charities as much as possible. City Manager, Michael Doody, said that every penny collected by the Society went straight into aid. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/138.00001</textSigle>
+            <title>Munster Express</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-009$B">
+          <head>
+            <hi rend="underline">
+              <hi rend="bold"> VOICE OF THE PEOPLE </hi>
+            </hi>
+          </head>
+          <head>
+            <hi rend="italic">
+              <hi rend="bold"> Public pay is the key to growth </hi>
+            </hi>
+          </head>
+          <p> THE PROSPECTIVE political partners are just now finalising their programme for what they describe as a <hi rend="italic"> Government for Renewal. </hi> If they can indeed provide a sense of renewal after the appalling conflicts of the last few weeks, then their new administration will be widely welcomed. </p>
+          <p> But they do have a major task ahead. The current negotiations are private, but we must assume that public sector pay is one of the key problems to be sorted out. If this issue is not tackled head on, then this incoming Government will fail to deliver the economic and social benefits which are the essential dynamo for growth. </p>
+          <p> The entire thrust of recent government policy has been to tax wage earners highly, to penalise industry and to extract the very maximum taxation on all economic activity. This extra money has been expropriated from the public by the Revenue Commissioners with ruthless efficiency. That has been the real policy of the outgoing government and the Revenue Commissioners have carried out that policy dutifully. That is their job. </p>
+          <p> The money collected has been transferred from individual wage earners in the private sector directly into the pockets of those working in the public sector. Thus, since 1987 wages in the public sector have risen by 70 <amp> per cent sign </amp> , compared with a 44 <amp> per cent sign </amp> increase for everyone else. </p>
+          <p> Not only has that policy been unfair, it has had the effect of seriously slowing down, if not strangling, firms which otherwise would have been able to offer more employment. That policy has to stop, it has to be reversed. </p>
+          <p> The outgoing Government constantly told us how good they were, but there was a large element of bluff in all their insistent assurances. In fact, the last Government was held to ransom by the public sector. The price was paid dearly by the unemployed and by those tens of thousands of bright young people who had to emigrate. The funds which should have generated jobs were swept away into the public purse. That was the true record of the last Government. </p>
+          <p> It was a policy which denied hundreds of thousands of our young people a right to live their lives, and to develop their careers here. Those educated young people who are working in London, Birmingham, Paris and Berlin and as illegals in the United States have been cheated also of their Irish inheritance. That policy can be changed, it must be changed. </p>
+          <p> The incoming Government must reduce taxes for lower paid workers. That is the only way in which their standard of living can increase. The new administration must insist on striking a more equitable balance between the public and the private sectors. </p>
+          <p> We believe that the Democratic Left, Fine Gael and the Labour Party will receive a strong, positive response if, together as a united front, they adopt a policy of social reform, based on equality and justice. </p>
+          <p> The Democratic Left is a Party with concise and practical ideas on the creation and the distribution of wealth and we do not believe that they are in any way the Party of extremists, as they are sometimes portrayed. </p>
+          <p> Similarly, once the Labour Party abandon their excessive use of shallow, public relations hyperbole and empty moral platitudes, they will gain greatly in public respect and will be in a better position to implement policies of genuine reform. Fine Gael should also be able to work well with these partners because, despite its traditional middle class support, it has always been inspired by popular radicalism which was epitomised over a generation ago by Declan Costello 's <hi rend="italic"> Just Society </hi> document. For all these reasons we believe that the partners share a common idealism and zeal for reform. </p>
+          <p> The new partners certainly have the potential and they have the will. All they require is a genuine unity of purpose, a spirit of tolerance and a determination to be truly loyal to each other, at least for their term in office. It can be done. In the interests of the country it must be done. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/138.00002</textSigle>
+            <title>Munster Express</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-009$C">
+          <head>
+            <hi rend="bold"> Time to Think of the Electorate </hi>
+          </head>
+          <p> Over the past week John Bruton 's star seems to have taken on a new brightness in the political firmament. Up to a few weeks ago many were writing him, and his party, off for anything better than the opposition benches. Now all that has changed. The in-words of accountability and transparency have been joined by the new brand of truth launched by Ray Burke last week – "unvarnished". Mr. Burke wants a visible and immediate presence of the new product. </p>
+          <p> We don't know just yet where the compass will stop or how much left of centre the new coalition will be. John Bruton will need to be a firm negotiator and Taoiseach if he is to build into the formula the required measure of control of the economy, at a time when public spending is three times more than the rate of inflation. The Labour Party, during all the huffs and the kiss-and-make-up sagas reached highs and lows in its stance on the "high moral ground". It was left to Geraldine Kennedy of the "Irish Times" to come up with a very crucial and well written story which seemed to put the final nail in the coffin of the Fianna Fail/Labour alliance. Indeed some women came into their own in a very responsible way and the Leader of the Progressive Democrats, Mary Harney, was the star of the nation during some of the earlier contributions in Leinster House. In all coalitions compromise is the name of the game in policies and in the selection of the Cabinet. Misfits in essential key portfolios would be our downfall. </p>
+          <p> As we write the show is still very much in rehearsal, and the controversies as to who said what and when, continue. We have had our share of entertainment over the past fortnight. Now comes the real business of running the country. There is no room for farce, comedy, stage-Irishism, buffoonery or ineptitude. The electorate should have been given the opportunity to make the choice, but since that has not happened we can only hope and pray that what comes out of the bag will serve us well over the next few years. </p>
+          <head>
+            <hi rend="bold"> A Minimal Sacrifice </hi>
+          </head>
+          <p> The St. Vincent de Paul Society have launched their annual appeal and all indications are that the demands are ever growing to help meet the needs of the poor and underprivileged. </p>
+          <p> Those of us who indulge in excesses of food and drink and cosset ourselves with some of the luxuries of life, could easily make a gesture which could be significant for many families in need. If we decide that we will be spending <amp> pound sign </amp> 20 on these excesses could we not with much benefit to our health set aside half of that amount for the St. Vincent de Paul Society? It would make Christmas so much more meaningful and it can be done with little effort by very many who at present make little or no contribution. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/139.00000</textSigle>
+            <title>Belfast Telegraph</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-004$A">
+          <head>
+            <hi rend="bold"> Balancing act </hi>
+          </head>
+          <p> EVEN before the Republic's new coalition government was finalised, Sir Patrick Mayhew was offering some pointed advice on Articles 2 and 3 of the Irish constitution. They were regarded as <quote> "an unhelpful territorial claim" </quote> to part of the UK and would be a central ingredient, he said, in discussions about a resumption of political talks in Northern Ireland. </p>
+          <p> His remarks confirm that Articles 2 and 3 were the main stumbling block to agreement. The Unionists wanted an assurance that a referendum "would" be held in the event of agreement being reached on new structures, but Dublin would only say that it "could". </p>
+          <p> Sir Patrick was lending weight to the unionist case, providing a necessary counter-balance to his sympathetic appraisal of the nationalist tradition in his Coleraine speech before Christmas. </p>
+          <p> Anyone who thought he was <quote> "going soft" </quote> by suggesting that Sinn Fein could qualify for early inclusion of the talks now knows the true position: there would have to be a <quote> "sufficient period" </quote> after renunciation of violence before dialogue with the authorities would be possible. </p>
+          <p> The message to the new government in Dublin is equally clear. If there is no change on Articles 2 and 3, which confer a "constitutional imperative" on governments to pursue Irish unity, further talks are pointless. </p>
+          <p> It remains to be seen how serious the new coalition administration is in facing up to the Northern Ireland problem. The agreed document between Fianna Fail and Labour only promised a referendum for any <quote> "agreed package" </quote>, emphasising a "balanced accommodation" and avoiding all mention of the disputed articles. </p>
+          <p> The hope must be that, since it was Mr Dick Spring who broke ranks last year by proposing a suspension of Anglo-Irish conferences, his moderating influence will soon be felt. With more boldness, progress could be made but that is an unlikely prospect. </p>
+          <p> Although Mr Reynolds has been more realistic than his predecessors, neither he nor Mr Spring will want to risk coalition solidarity over the North, at least until after Ulster 's local government elections in May. For them, there are far more pressing economic problems to resolve. Here, unfortunately, the parties are starting to dig their trenches already. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/139.00001</textSigle>
+            <title>Belfast Telegraph</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-004$B">
+          <head>
+            <hi rend="bold"> Sectarian fires </hi>
+          </head>
+          <p> THE recent spate of arson attacks on Catholic and Protestant churches and Orange Halls epitomises the sick sectarian undercurrent present in this province. It is a low-life form of ethnic cleansing, striking at the religious affiliations and cultural traditions of the opposing community. </p>
+          <p> The material cost of the fire-raising is substantial. Scores of buildings have been attacked. In some instances they have been so badly damaged that they can never be restored to their former state. Part of our heritage is being put to the torch. </p>
+          <p> There is a more insidious cost. The attacks raise the level of mistrust and suspicion among neighbours and heighten community tension. They add fuel to an already explosive mix. Saddest of all, these irreligious acts are often carried out in the name of religion. </p>
+          <p> There is one saving grace. Frequently the outrages lead to a true Christian response in affected communities. Clergy and laity cross the divide to offer support, both spoken and financial, to those who have been attacked. They recognise that it is a battle of good against evil. </p>
+          <p> A most fundamental civil right is under attack in both communities. The arsonists are the enemy of all. They defend no cause but attack our freedoms. There is only one place for them. Behind bars. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/139.00002</textSigle>
+            <title>Belfast Telegraph</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-004$C">
+          <head>
+            <hi rend="bold"> Life savers </hi>
+          </head>
+          <p> CHEAP they may be, but smoke alarms have proved their worth as life-saving devices. At least 145 people escaped uninjured from house blazes here last year after being alerted by the warning sirens. The number of fatalities fell to 15, almost half the previous year's total. </p>
+          <p> As advertisements show, fires take hold with frightening rapidity and it is essential that householders are given the earliest possible warning of any outbreak. Strategically sited alarms are the best safeguard and every home should have at least one. </p>
+          <p> The devices are inexpensive. Special schemes are available to install them free of charge for people like pensioners. Get one now. It could save your life. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/139.00003</textSigle>
+            <title>Belfast Telegraph</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-004$D">
+          <head>
+            <hi rend="bold"> Critical list </hi>
+          </head>
+          <p> THE consultation process continues, but the future of hospital reorganisation in the Eastern Board area is much clearer from today. The Belfast Telegraph 's exclusive revelations on the future purchasing plans of the board provide the fullest picture yet of how the existing hospitals will expand or contract in the years to come. </p>
+          <p> A previous consultation document set out the Board 's criteria for evaluating hospital services, from which hospitals like Downe concluded that they would lose patients. Now they know the worst, and it appears that the biggest losers are the Royal, City and Downe hospitals, while the Mater, Lagan Valley and Ulster hospitals all attain a higher status. </p>
+          <p> The Board 's reasoning is that since it becomes a purchaser of services from April 1, it must spend its money where the population will get the maximum benefit. As it has lost out financially, because of changes in funding, it would say there is no alternative to rationalisation of expensive services, while not wanting patients to have to travel too far. </p>
+          <p> The result is that the Board will be relying less on the Royal and City and more on outlying hospitals like the Lagan Valley in Lisburn and Ulster in Dundonald, which are easily accessible to people who have moved out of Belfast. It will be up to the two Belfast-based hospitals, which will get self-governing trust status from April, to consider how best they will meet this challenge. Less duplication and perhaps and eventual merger may be on the cards, but their teaching hospital status must be preserved. </p>
+          <p> There is no easy answer to the problems facing the hospital service, as medical technology develops new means of treatment at the same time as patients ' expectations grow and funding, in real terms, declines. The Eastern Board is about to put its proposals on the table, which must be anathema for those hospitals and communities which see their services down-graded. </p>
+          <p> The protests will continue, and adjustments may still be possible. But the Government 's reform laid down the ground rules, with their concept of a free market in medicine, and it will be difficult to upset them. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/139.00004</textSigle>
+            <title>Belfast Telegraph</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-004$E">
+          <head>
+            <hi rend="bold"> Killing stakes </hi>
+          </head>
+          <p> A year ago this week-end eight Protestant workmen were murdered by the IRA who blew up their minibus at Teebane. It was a sickening atrocity which shocked the province. But it was also a signal for an upsurge in sectarian violence. </p>
+          <p> Today we are still reaping the whirlwind of Teebane. Last night a Catholic man was shot dead by loyalists and a Protestant seriously wounded by republicans. The murder of the workmen unleashed the dogs of war. </p>
+          <p> The loyalist counter violence — including two multiple murder attacks on bookmakers ' shops in Belfast — demonstrated the new ruthlessness and chilling effectiveness of the restructured UFF and UVF. They have demonstrated their willingness and capacity to equal, indeed outpace, the IRA in the killing stakes. </p>
+          <p> Terrorists of whatever hue now know their actions will be answered in kind. Their continued campaigns show that they no longer pretend to de defenders of their respective communities. By their actions they bring only retaliation onto their own streets. </p>
+          <p> What can be done to counter the violence? Part of the answer is for the ordinary people to unite against the terrorists. Two women — one Catholic, one Protestant — widowed in Tyrone last week later met to share their grief. They showed they feel the same anguish. Murder is murder, no matter who perpetrates it. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/139.00005</textSigle>
+            <title>Belfast Telegraph</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-004$F">
+          <head>
+            <hi rend="bold"> Home promotion </hi>
+          </head>
+          <p> THE visit of a 40-strong EC team to Londonderry today shows the value of determined self promotion. John Hume has influential contacts in Europe and America and uses them to show to a wider audience the problems facing his native city. </p>
+          <p> If there is a criticism, it would be that Mr Hume, as a MEP for the whole province, should have drawn up a wider itinerary for his visitors. Doubtless, though, he would argue that the difficulties of Derry are more acute than in other areas and the self-help initiatives employed to tackle them more innovative. </p>
+          <p> The exercise demonstrates the need for Ulster 's politicians to take a more positive international role. Belfast MPs, Cecil Walker and Joe Hendron, proved on their recent visit to America that there are jobs and investment to be found abroad. </p>
+          <p> Belfast, whose image has been ill-served by some of its councillors in recent times, is also to engage in a big jobs and tourism promotion, costing <amp> pound sign </amp> 5m over the next five years. Perhaps more of our politicians are now learning that economic revival is more important than bickering over issues which they cannot influence. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/139.00006</textSigle>
+            <title>Belfast Telegraph</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-004$G">
+          <head> political column </head>
+          <head>
+            <hi rend="bold"> Summit of aspirations </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Emily O'Reilly </hi>
+          </head>
+          <p>
+            <hi rend="bold"> The taoiseach has set the deadline. By nightfall on December 3rd — or whatever day his summit in Dublin with the British prime minister takes place — we shall know whether the "possibility of peace" is a reality. </hi>
+          </p>
+          <p> Throughout Leinster House, politicians are holding their breath. Either Albert Reynolds is naive or, in his 35-minute, completely private meeting with John Major on the margins of the October Brussels summit, he found out something about British government intent to which no one else is privy. </p>
+          <p> The northern secretary is resisting the notion of deadlines. He is also resisting the belief of the government in Dublin that any round of talks in the old, 'three-strand' process would be largely futile without a prior cessation of violence. </p>
+          <p> Sir Patrick Mayhew wants the talks to begin anyway. If peace flows from that, well and good, he believes. If not, they may still yield other benefits. </p>
+          <p> The difference is not one of tactics, or even emphasis. When Mr Reynolds speaks of a cessation of violence, he is speaking in the first instance of a cessation of IRA violence. And he knows that persuasion alone will not win that. </p>
+          <p> To get the IRA to stop, it must be given something. And it is that 'something' the British are resisting, through their insistence that a cessation of violence should not be the main priority. </p>
+          <p> The taoiseach has already ruled out a British declaration of intent to withdraw by a certain date. He knows it 's not on, and he knows that such a declaration would further inflame a murderously sensitive situation. </p>
+          <p> His government does, however, want the British to make a declaration. What this is it will not spell out in public but, at the very least, it wants the British to get off the neutral fence and become proactive in the drive for a solution. </p>
+          <p> If the British remain neutral, the republic's government fears that the <italic> status quo </italic> will remain, that the talks will end up in the same cul-de-sac as before — and that violence on both sides will increase. </p>
+          <p> Dick Spring 's six principles do not, according to the Sinn Fé/ein president, Gerry Adams, address the fundamentals of the Hume-Adams plan. They do not contain a mechanism by which the unionists could be compelled to look for a solution outside the narrow framework of an internal settlement. </p>
+          <p> Yet it is clear from government sources in Dublin that the taoiseach and the té/anaiste realise that just such a dynamic must be part of any new framework for progress worked out by both government. </p>
+          <p> One possibility is contained in a draft document from the republic 's side, leaked to me last month. This talks of a <quote> "reciprocal endorsement" </quote> of the constitutional positions of both governments, in which the republic would reaffirm its commitment to the no-change-without-consent principle on the north. In that context, it suggests, the British would <quote> "acknowledge the full legitimacy and value of the goal of Irish unity by consent, cherished by the greater number of people living in Ireland, and the consequential need for practical provisions to give that objective equally meaningful operational expression and opportunity, including in any future structures within Northern Ireland and between North and South" </quote> . </p>
+          <p> In public at least, there is no sign that the British want to play ball, despite Mr Major 's honeyed words in the Guildhall. While welcome, from Dublin 's point of view, in tone and emphasis — plus the deliberate use of language similar to that of Mr Reynolds and Mr Spring — the speech contained nothing new. </p>
+          <p> Privately, British officials say that their government is not about to join the ranks of the 'persuaders'. This implies that it is content to remain neutral, focus exclusively on the talks process and hope for the best. </p>
+          <p> But if John Hume has done nothing else, he has at least convinced the republic 's government that the talks process is insufficient on its own, and that only a separate, British-backed initiative can break the logjam. </p>
+          <p> To date, Dublin 's strategy has been to sweet-talk the British and the unionists and risk short-term nationalist alienation for the sake of longer-term nationalist gain. The assurances to the unionists, topped up with a stated willingness to neuter articles 2 and 3, should, they hope, put pressure on the British to reciprocate. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/140.00000</textSigle>
+            <title>Fortnight</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Robin Wilson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-005$A">
+          <head>
+            <hi rend="bold"> leader </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Ideology 's human cost </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Robin Wilson </hi>
+          </head>
+          <p>
+            <hi rend="bold">
+              <quote> "Everybody has had enough." </quote>
+            </hi> Those four words from the wife and mother of two of those injured in the Shankill IRA atrocity ought to have <hi rend="italic"> been </hi> enough to staunch the bloodshed. Yet they were not: <sic> loyalsts </sic>
+            <corr> loyalists </corr> were already well on the way to evening the 'score' after we went to press. </p>
+          <p> Last month we warned that the Hume-Adams agreement would only serve to <quote> "reinforce the adversarial political culture on which the War Process subsists". </quote> And so, with relentless inevitability, it did. </p>
+          <p> The Ulster Unionist leader, James Molyneaux, who sees himself as government kingmaker courtesy of his 'understanding' with John Major, described John Hume as his <quote> "greatest ally" </quote> in cementing that relationship — reciprocated in the prime minister 's conference approbation of the "Conservative and Unionist party". </p>
+          <p> But there was, of course, far worse. It was as sure as night follows day that loyalists would up the ante. Some 30 attacks followed in as many days — with unionists, slavering about a 'pan-nationalist front' in front of every microphone, effectively egging them on. </p>
+          <p> It was utterly predictable, too, that the IRA — incredibly not required to make a single concession for the new legitimacy attaching to its political wing — would 'negotiate from strength' with further bombs, and would in turn up the stakes with the loyalist hit squads. 'Regrettable', though, as Gerry Adams put it, the collateral damage of those ten massacred at the fishmonger 's. </p>
+          <p> But why should Mr Adams be contrite? He had outmanoeuvred Mr Hume, and was perfectly placed to claim the onus was now on the British government, not the IRA, to respond to their 'peace plan'. A plan about which the IRA army council, the US administration and Nelson Mandela have been briefed, but which cannot be revealed to the Dé/ail — never mind the long-suffering populace of the north. </p>
+          <p> Unlike SDLP members. Sinn Fé/ein activists have been told the substance of the discussions. As Ed Maloney reported in the <hi rend="italic"> Sunday Tribune </hi>, <quote> "Activists are being told that Sinn Fé/ein could make substantial gains through what the party 's leaders see as the potential of the Hume-Adams agreement to bring the SDLP and Dublin government closer to Sinn Fé/ein on the terms for a northern settlement." </quote> They were not, he said, being prepared for any concession. </p>
+          <p> Mr Adams has now secured the unprecedented principle that a cessation of IRA — and all other — violence is not an immediate moral imperative, but must attend upon a political pay-off acceptable to the army council. </p>
+          <p> As Stephen Collins commented in the <hi rend="italic"> Sunday Press </hi> last month, <quote> "The fact that things have gone so far in the direction of a common nationalist front involving Sinn Fé/ein while the IRA campaign continues is something that would have been unthinkable even a year ago and it marks a huge sea change in Irish politics ... Despite some deep-seated reservations the government has gone along with the strategy to date and it may well be too late to get out." </quote>
+          </p>
+          <p> Ministers were rocked on their heels by Mr Adams ' remark, echoed by the IRA, that peace was not a "prerequisite" of the ... peace process! After the Shankill bomb, the té/anaiste, Dick Spring, said that 'process' had been dealt a <quote> "grievous blow". </quote>
+          </p>
+          <p> Yet Mr Adams ' response to the té/anaiste 's comments suggested that he was the government, the latter a mere bystander. He slapped him down thus: <quote> "Mr Spring has to allow me to be the best judge of how I move forward". </quote>
+          </p>
+          <p> It is an appalling catalogue of error. There must now be an end to what Dick Walsh of the <hi rend="italic"> Irish Times </hi> called <quote> "fooling around with words". </quote> Engaging in an airy disquisition about 'Irish self-determination' while claiming simultaneously to be seeking unionist 'agreement' is self-delusion: ever heard of anyone supporting 'self-determination' who wanted to remain inside a state? The inevitable unionist riposte was that <hi rend="italic"> they </hi> had the right of 'self-determination', to secede from the rest of the island. We 've had that argument for a century and, while the slaughter continues, we can go round that circle for ever. </p>
+          <p> There has been much facile comparison of Northern Ireland with the middle east and South Africa — mindless of the fact that these two conflicts were prisoners of the cold war, whose demise made the breakthrough possible. Last month, Padraig O'Malley of the Opsahl Commission, who has closely studied South Africa, drew the real parallel: the relative 'manageability' of the Northern Ireland conflict, the argued, meant there was not the same pressure on politicians to compromise. It may, he gloomily concluded, have to get a lot worse before it gets better. </p>
+          <p> The two government must now recapture the initiative. They must elaborate positive proposals that can command acceptance across Northern Ireland. People are crying out for the <quote> "vision of hope" </quote> called for by Archbishop Eames. The 'realities' identified by the Opsahl report, based on a widespread survey of opinion, offer a ready-made framework. </p>
+          <p> If they do not, that human appeal of the Shankill relative will be in vain. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/140.00001</textSigle>
+            <title>Fortnight</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Robin Wilson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-005$A">
+          <head>
+            <hi rend="bold"> leader </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Popular power </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Robin Wilson </hi>
+          </head>
+          <p>
+            <hi rend="bold"> The pieces inside by Adrian Guelke (p12) and (in the supplement) Eamonn Gallagher should make arresting reading for any complacent minister or official in London or Dublin </hi> . Can any <hi rend="italic"> still </hi> be complacent after the miasma into which the 'peace process' collapsed last month? </p>
+          <p> In giving the Downing Street Declaration a fair wind ( <hi rend="italic"> Fortnight 324 </hi> ), we suppressed our doubts about the way it hinged on the notion of 'self-determination' ( <hi rend="italic"> Fortnight 321 </hi> ). Yet it is now evident that what Mr Gallagher calls the <quote> 'paradigm of conflicting self-determinations' </quote> , which has been at the heart of attempts to achieve a settlement since direct rule, is fundamentally flawed. </p>
+          <p> As the former Opsahl commissioner argues, <quote> "While academic research during the past 20 years or so has concentrated on the problem as principally an internal conflict largely confined to Northern Ireland but with external ramifications, politics has concentrated on the self-determination paradigm — with, and perhaps for that reason, limited success." </quote>
+          </p>
+          <p> Prof Guelke, having written on international dimensions of the conflict as well as on his native South Africa, is similarly well placed to comment. Making self-determination hinge on whether nationalists or unionists hold a majority, he points out, is not only not new; it does not offer a formula for breaking down the sectarian divide. Instead, it risks "placing a political premium on the maintenance of community solidarity and offering no incentives for cross-community co-operation". </p>
+          <p> Last month 's messy exchanges between Sinn Fé/ein, the two governments and sundry other players entirely missed the point — which is not whether the declaration is 'clarified' or not. Paradoxically, to 'clarify' it for Sinn Fé/ein, to make it more akin to Hume-Adams, would entail making key elements <hi rend="italic"> less </hi> clear — particularly the majority-consent principle and the neutrality of the British, both of which would be qualified into an implied long-term withdrawal formula. </p>
+          <p> So are we inevitably destined to spend weeks, months, years more 'Waiting for Provo'? There is now no doubt that the republican movement will not accept the declaration as it stands, and equally none that the 'clarification' Gerry Adams has sought would see crucial liberal Protestant support (see p14) disappear like snow off a ditch. </p>
+          <p> But there is another way. Republicans have tentatively indicated that what <hi rend="italic"> could </hi> be acceptable is a clear and incontrovertible commitment by the British government on foot of the declaration to introduce a series of measures which would <quote> "empower the nationalist community" </quote>. </p>
+          <p> They frankly admit that the rank-and-file republican view of the declaration is that it has nothing to offer. They point to the disillusioning experience of the first hunger strike, when a vague and general document produced by the British did not lead to the expected concrete steps (until after the next one). And they are convinced that, even were the IRA to accept the declaration as it stands, another IRA would take its place. </p>
+          <p> But what if, as was suggested in <hi rend="italic"> Fortnight 323 </hi>, the British government was to commit itself — and, where possible, rapidly introduce — a raft of measures which secured the 'empowerment' of nationalists (without disempowering unionists) which the Opsahl Commission held out? A promise that any new political institutions would entrench equality, not just majoritarian power-sharing; a pledge to give legal recognition of nationalism so that Northern Ireland no longer enshrined unionist cultural dominance; new north-south structures so that relationship on the island were between Irish men and women alone; a bill of right and repeal of 'emergency legislation'; phased withdrawal of the army, initially to barracks; a fundamental review of policing, to establishing a service which no longer entailed the majority policing the minority; a programme of social and economic reconstruction for ghetto areas; phased release and reintegration of paramilitary prisoners; and so on. </p>
+          <p> This would give republican leaders something to 'sell' as a rationale for a purely peaceful politics, would indicate the <hi rend="italic"> bona fides </hi> of the British state and would clearly help, rather than hinder, the long-term goal of unification by consent. </p>
+          <p> None of these principles need prejudice renewed interparty talks. Indeed, the latter frankly have no chance of success unless such a clear framework is established for them. For by ending the ludicrous separation between 'peace' and 'talks' — not to mention the latter's baroque 'three strands' division — we could then get on to the business of fleshing out the cross-sectarian consensus that Opsahl sketched and to which Prof. Guelke alludes. </p>
+          <p> The big question, as ever though, is this: would the <hi rend="italic"> British government </hi> be prepared, given the Conservatives ' implacable hostility to root-and-branch reform of the British constitution, to entertain such a radical rethink, to make a settlement possible in Northern Ireland? </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/140.00002</textSigle>
+            <title>Fortnight</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Robin Wilson</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1993</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-005$A">
+          <head>
+            <hi rend="bold"> The final phase </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Robin Wilson </hi>
+          </head>
+          <p>
+            <hi rend="bold"> Last month, most of the political class in these islands was still asking the wrong question.</hi> 'Will the republican movement accept the joint declaration?' was answered in December ( <hi rend="italic"> Fortnight 324 </hi> ). The real question is <quote> 'Can IRA (and other) violence be brought to an end?' </quote> The answer to that could now be yes. </p>
+          <p> The <hi rend="italic"> Economist </hi> rightly attacked both government last month for their lack of forethought at the time of the declaration as to what they would do if the IRA did not accept it. Subsequent inertia in London has let Sinn Fé/ein roll forward off its heels with the endless, synthetic calls for <hi rend="italic"> British </hi> 'clarification' — as if a 16-page document from an <hi rend="italic"> Irish </hi> government wasn't good enough! Last month, that inertia entailed an unbelievably stupid defence of the Prevention of Terrorism Act — as if to validate those defiant IRA mortars at Heathrow — in continued contravention of the European Convention of Human Rights. </p>
+          <p> Yet Dublin has also encouraged northern nationalist immobilism, echoing the Hume-Adams rejection of an 'internal settlement' — when, as the Social Democratic and Labour leader himself surely appreciates, the very dichotomy of 'internal' <hi rend="italic"> versus </hi>'external' pertains to a period of absolute 'national sovereignty' obsolete in the modern Europe. The genius of the Opsahl report was to address 'internally' — via legal recognition of northern nationalism and other innovations — aspirations it was traditionally conceived could only be met by 'external' means. </p>
+          <p> In the light of the defeat of the 'liberal' Chris McGimpsey at the Ulster Unionist agm and the histrionics by the Democratic Unionist leader, the Rev Ian Paisley, in Downing Street, the <hi rend="italic"> Economist </hi> was also right to conclude: <quote> "Northern Ireland 's politicians cannot, and probably will never be able to, formulate among themselves ... a settlement." </quote> But it continued: <quote> "Nevertheless, polls show that a vast majority of people in Northern Ireland are fed up with the province 's [sic] political stalemate as well as the convoluted rationale given by the IRA for its violent campaign ... The two governments must now exploit this desire for a settlement, and the growing anger at the IRA, by proposing how peace, and justice, in Northern Ireland can be achieved."</quote>
+          </p>
+          <p> Just so ( <hi rend="italic"> Fortnight 326 </hi> ). Start with the right question. And the initial answer is that <hi rend="italic"> already </hi> IRA violence has been constrained, by such evidence of popular anger as the recent north-south poll for BBC 's <hi rend="italic"> On the Record. </hi> Civilian casualties are now out, as are huge bombs in Protestant towns. </p>
+          <p> Result? Only two IRA victims this year, as we went to press. That 's no consolation to the five Catholics slayed by sectarian assassins, but even that killing rate, horrendous though it is, is down on the last two years of bloody loyalism. No one has been killed by the police or army since November 1992. </p>
+          <p> The republican leadership is also hoist by its own petard. As after Heathrow, every act of IRA violence now only devalues Mr Adams ' peace-loving credentials. The web of three governments SF drew around itself, party <hi rend="italic"> via </hi> Mr Hume, is falling apart — as impatience grows not only in London but in Dublin and Washington, and is no longer even concealed by Mr Hume 's party colleagues. </p>
+          <p> The <hi rend="italic"> Andersonstown News </hi> could not be further, in class or national terms, from the aloof assuredness of the <hi rend="italic"> Economist. </hi> But last month it set out a fuller answer to the (right) question: <quote> "It surprises us that usually sane people should thing that, after 20 years of armed conflict and thousands of deaths, the situation could be rectified without a fundamental and radical change in society." </quote>
+          </p>
+          <p> And it went on, echoing Opsahl: <quote> "No matter about the nitty gritty of constitutional change or the argument about self-determination, the ethos of the state here has to change to accommodate the identity and outlook of all its citizens." </quote>
+          </p>
+          <p> It 's an argument compellingly made inside by the leader of SF on Belfast City Council, Alex Maskey (p28), in a demand for real parity of esteem. In this state, such liberalism and pluralism <hi rend="italic"> would be </hi>
+            <quote> 'fundamental and radical change'. </quote>
+          </p>
+          <p> It 's been the role of <hi rend="italic"> this </hi> leader column in recent months to point the way through the impasse by highlighting this legitimate republican demand for empowerment of the northern minority, as against perpetuating in intractable 'argument about self-determination'. </p>
+          <p> In last month 's Lords debate on Opsahl, the former Northern Ireland secretary Lord Rees said: <quote> "The report is a remarkable document ... It influence and should influence the steps that are to be taken." </quote> Its beauty is that, should IRA (and other) violence become increasingly perfunctory, it provides steps — such as a bill or charter of rights — which republicans can welcome to ease them out of the political ghetto into a wider <hi rend="italic"> realpolitik, </hi> yet which liberals and pluralists can endorse as a necessary substratum of new institutions. </p>
+          <p> And, just as importantly, its overall recommendations — supported by a 'vast majority' in the subsequent poll as they were — provide a basis on which the two governments can establish just how 'peace, and justice' are to be secured. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/141.00000</textSigle>
+            <title>Sunday Tribune</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Mary Ellen Synon</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1998</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-008$A">
+          <head>
+            <hi rend="bold"> SECOND THOUGHTS </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Mary Ellen Synon </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Three days of every working week the Irishman is a slave </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Part of the population remains tax slaves, working for the benefit of the other part, who remain parasites </hi>
+          </head>
+          <p> ON considering the citizens of this state, one 's mind naturally turns to thoughts of slavery. Anybody who works here turns over more than half the wealth he creates to the state. </p>
+          <p> The term for this is taxation, but the effect is slavery: for slavery means being forced to work for the benefit of others. Three days of every working week, the Irishman is a slave. And a badly paid slave, too: in the 19th-century slave states of America, the typical slave field hand received about 90 <amp> per cent sign </amp> of the income he produced. The typical Irish PAYE worker receives about half as much. </p>
+          <p> And who is it that is enslaving the Irishman? Well, that is an interesting point. Usually you would imagine that it is either the totalitarians of the right; or it is the totalitarians of the left. </p>
+          <p> That is the way it has been in most states with a slave economy. But here we have a quirk. We have left and right both working towards enslaving the population, for different reasons – or, at least, under the guise of different philosophies – but with the same end. Which is no real comfort to the slave, but he might want to look up from the cotton-picking long enough to see whose hand holds the whip. </p>
+          <p> First, consider the totalitarians of the Irish religious right. They, of course, do not believe that the citizen should work for his own benefit. He must, the right say, work for glory in the next life, for the word of God, for the needy, for the benefit of his family, for the benefit of other people 's families, for poor people here, for poor people anywhere. </p>
+          <p> However, he must not work for his own benefit. That, say the religious right, is wrong. That is selfish. That is also liberty, but the religious right do not work for liberty. They work for the surrender of liberty. They work for slavery. </p>
+          <p> The heartiest slave-drivers of this religious right are the priests and nuns who press the Government – in the name of 'justice': how the stomach turns – to pull more and more taxation from the working people so that idle people can have bigger welfare payments. </p>
+          <p> The success of this lobbying can be seen in the result. Part of the population remain slaves, working for the benefit of the other part, who remain parasites. </p>
+          <p> Neither group has control over its money, either how it is spent or where it comes from. Neither group is made up of citizens enjoying liberty. But we are assured this is God 's intention: money must go where it is needed, not where it is earned. </p>
+          <p> The other slave-drivers of the right are those who say they work to protect the family, to protect morals, to bring God 's laws into civil legislation. </p>
+          <p> Now, these people are a particularly interesting set. Mostly their policies are founded on utter irrationalities. They do not deny that their foundation is irrational; they admit it is mystical revelation, not rational argument. </p>
+          <p> Yet sometimes their irrational motives bring them into rational territory. And the slave ought to look up and be pleased that, if only by accident, liberty is somewhere left alive. </p>
+          <p> I mean in particular the question of legislation on abortion. The ardent right oppose abortion, which is a rational and liberal thing to do. But they oppose it for the wrong reasons. </p>
+          <p> Consider this. The free individual lives for his own benefit. He is in slavery only when he is forced to live for the benefit of others. The individual – the free individual – needs no further justification to own his life than that life exists. </p>
+          <p> No person, however young, must die for the benefit of another – not unless he himself chooses to. The pre-born child lives for his own benefit, not for the benefit of his mother. The law must protect the individual 's ownership of his own life. Abortion is a form of slavery taken to its most extreme. </p>
+          <p> So no-one 's liberty – except in the rarest of cases – is endangered by laws against abortion. But the right 's warped reasoning, which by coincidence reaches the right conclusion on abortion, reaches the wrong conclusion on just about everything else. </p>
+          <p> Marriage without the possibility of civil divorce is slavery; restriction on the free choice of willing partners is slavery – in other words, what chaps do with chaps is not something the law should be concerned about. </p>
+          <p> The destruction of liberty is everywhere on the right. But the horrors come when one sees there is no refuge on the left. </p>
+          <p> The left offer the slavery of democracy. They offer the totalitarianism of 51 <amp> per cent sign </amp>. An individual, they say, has no rights, he has only the privileges given by the majority. And the majority can remove those privileges any time: all they have to do is to pile into a polling booth. Well, anybody who has ever looked for virtue in a polling booth is bound to be disappointed. </p>
+          <head>
+            <hi rend="bold">
+              <quote> "To assure liberty, the aim of each moral choice must be self-interest" </quote>
+            </hi>
+          </head>
+          <p> The forces of the left, of course, are even more adept at looting workers ' pay packets than are the forces of the right. They say any theft is moral if a majority vote for the theft. </p>
+          <p> They are wily, though, in the way they hide the theft. Each citizen who is below what may be called the envy line – a statistic more genuine than the poverty line – is led to believe that if he allows a little theft from his own earnings, what is nicked from others and given to him will be a greater sum. </p>
+          <p> In other words, he will be burgled, but he will be allowed a good pile of loot from the neighbour 's house. </p>
+          <p> Any mug who believes his own benefit lies in stealing from others might as well climb on to the auction block and open the bidding on his own freedom. For there is a web of moral choices to be made, and the wrong choices end in slavery. To assure liberty, the aim of each moral choice must be self-interest. </p>
+          <p> A government of thievery – no matter in whose apparent interest – is against each citizen 's self-interest. Each individual, to remain at liberty, must refuse to tread on the liberty of any other citizen. </p>
+          <p> To refuse to steal from another citizen, to refuse to control, to refuse to <hi rend="italic"> enslave, </hi> is not altruism. It is a far better thing: it is self-interest. </p>
+          <p> Self-interest is the powerful engine of liberty which the left hate. The left say "steal," they say "take what you have not earned", they say "control other men 's lives with restrictions, with demands, with guilt". </p>
+          <p> The individual who values liberty refuses to do all these things, not because he is protecting the liberty of others, but because he is protecting his own liberty. To agree to the controls of the left is to sell yourself into slavery. </p>
+          <p> The alert citizen must beware how the left package their slave market: when one of the left says "think of others", the only rational reply can be: "I will think of and for myself. Others are capable of thinking of and for themselves". </p>
+          <p> The result of relentless self-interest is a marvellous thing. It is a life of independence and liberty. It is a life without slaves or beggars or parasites. It is a life in which the totalitarians of the left – and the right – are destroyed. </p>
+          <p> Yet the left say we must live for the benefit of others in the name of community and democracy; the right say we must live for the benefit of others in the name of God and charity. </p>
+          <p> And the really frightening thing is, the slaves have come to believe it. So they have forged their own chains. </p>
+          <p>
+            <hi rend="italic"> Mary Ellen Synon is a freelance columnist </hi>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/141.00001</textSigle>
+            <title>Sunday Tribune</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Mary Ellen Synon</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1998</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-008$B">
+          <head>
+            <hi rend="bold"> TRIBUNE EDITORIAL </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Is Mr. Major gone into the nudge-and-wink politics </hi>
+          </head>
+          <p> WHEN is a deal not a deal? Could it be when <sic> its </sic>
+            <corr> it 's </corr> only 'an understanding.' People involved in politics full-time like the Taoiseach and Mr. John Major will be more than aware of what can be done by a piece of fancy sophistry. John Major says that nothing was sought, nothing was offered and nothing was given ….. which could still mean that what happened last week between himself and the Unionists (if anything happened!) might be the result of a growing awareness of the plight of each other between Mr. Major and the Unionists, and then a gradual process of policy-making. </p>
+          <p> Being from the Fianna Fail Party, with its ability to work the 'wink-and-nudge' system to the point where it has become a political art, the Taoiseach may have been highly suspicious when he spoke on television this week and said that he believed Mr. Major when Mr. Major said that no deal had been struck. True to the form of the wink-and-nudge tradition, there can hardly have been a person in this country who did not know that he too will be highly suspicious of what might have gone on last week, but has to accept (ostensibly) what is said on the record. </p>
+          <p> If this all sounds a little like something from Alice in Wonderland (through the glass darkly? ….. or curiouser and curiouser?) the fault lies with the fact that the Unionists got in on the nudge-and-wink game last week, albeit without the finely-tuned antennae of Fianna Fail who would have let their followers know exactly what happened but would have had to say precisely nothing. Any doubts would have been taken care of by the equally-sophisticated Fianna Fail semaphore which can signal anything from the downfall of a Taoiseach to the latest stance on The North without an overt mention of either. </p>
+          <p> Really, does anyone believe that some form of 'meeting of minds' has not occurred between John Major and the Unionists. We go back to the era of Charlie Haughey in power as Taoiseach when one of his aides is reputed to have said (when Fianna Fail needed the Dail vote of Independent Dail Deputy Mr. Tom Foxe) ….. <quote> "if Tom Foxe wants a general hospital on the Aran Islands, they give it to him." </quote> At the time Mr. Foxe was campaigning on the basis of keeping the general hospital in Roscommon. How many "general hospitals" would John Major give to ensure that he stayed Prime Minister of Britain? Compared with the price of a hospital for Taoiseach, a Select Committee for Northern Ireland would be a mere bagatelle. </p>
+          <p> Of course there was a deal done, an understanding reached, a meeting of minds, a development of policy, a <hi rend="italic"> modus operandi </hi> reached. Call it by whatever delicate name you like …. Other than a 'deal done' for that does sound shabby. It will probably emerge over a period of time; the Unionists are learning the semaphore, the nudge-and-wink. Albert Reynolds and Dick Spring may get a bit hot under their collars, but this is politics on a grand scale and the prize is Britain! Mr. Reynolds and Mr. Spring may have to become accustomed to the idea of a Select Committee and other courting of the Unionists. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/142.00000</textSigle>
+            <title>The Gown</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-001$A">
+          <head>
+            <hi rend="bold"> EDITORIAL </hi>
+          </head>
+          <p> The Government 's announcement that 31 pits are to be closed illustrates the truly uncaring nature of this unfair administration. Despite Mr. <sic> Heseltines </sic>
+            <corr> Heseltine 's </corr> umming and erring ('cause he 's realised the size of the anti-government feeling) there is no <sic> committment </sic>
+            <corr> commitment </corr> to improving the quality of peoples lives and his feeling of "sadness" for the mining community gives crying crocodiles a bad name. Since 1979 the Conservative party has embarked on the campaign of privatisation and has always defended its policies by uttering the old buzz words like 'free market' and 'accountability'. The glorious revolution they unleashed has witnessed a growing polarity between rich and poor (at its greatest level since the late 1800 's), a rise in the level of unemployment (Labour isn't working eh?), an effective dismantling of the welfare state and (this bit affects you) a reduction in the standard of living for students. The heyday of voodoo economics has been and gone, our national assets have been sold off (anyone seen Sid recently?) we now stand on the edge of an abyss in which severities are stretched to extremes. In other words we 're all doomed! </p>
+          <p> However, there is light at the end of the tunnel. Opposition to the government is at an all time high; miners, nuclear power workers, railway workers teachers the unemployed and (hopefully) that humungous sponge they call the student population are uniting to march on parliament. The old system of privatisation has shown itself to be incompetent. Reinvestment is needed, subsidies are called for , education needs expanding, the sick need looking after, industry needs a boost. </p>
+          <p> Now is the time to extend the hand of comraderie, put those differences behind you and give the Government the big 'V'. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/142.00001</textSigle>
+            <title>The Gown</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-001$B">
+          <head>
+            <hi rend="bold"> MORNING VIEW </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Peace mission lacks credibility </hi>
+          </head>
+          <p> THE close working relationship between Prime Minister John Major and Ulster Unionist leader James Molyneaux will be under considerable strain when the pair meet for talks this week. And no wonder. </p>
+          <p> The willingness of the Government to appease Sinn Fein and the IRA so as to get them to accept the Downing Street Declaration has undermined the security operation to such an extent that the terrorists are now effectively calling the shots, in terms of violence and propaganda. </p>
+          <p> The nightly debacle at Heathrow has made security at Europe 's busiest airport a sick joke, yet the Government clings to the mistaken belief that those responsible for these murderous attacks can be persuaded peaceful political aims. </p>
+          <p> Government ineptitude has allowed the IRA to make significant gains from its 25 years of shooting and bombing and, as long as this weakness continues in high places, the Provisionals are not going to assume a position where they are merely a marginal political party with less than 10 per cent of electoral support in Northern Ireland and 2 per cent in Eire. </p>
+          <p> They believe there are more political concessions in the pipeline and are prepared to kill to secure them. </p>
+          <p> Unionists are not only appalled by the Government 's apparent soft line on terrorism and its willingness to do Dublin 's bidding. </p>
+          <p> John Major 's Tory back-benchers are also demanding an urgent reappraisal of Government policy to take account of the dangerous situation that has developed in the three months since the signing of the Declaration on December 15. </p>
+          <p> Peace has now become the most over-used word in the vocabulary of the political rulers in both London and Dublin as they pathetically wait for the response of the IRA and Sinn Fein to the Declaration, content only to fire a barrage of words. </p>
+          <p> John Major and Albert Reynolds are indeed beginning to look ridiculous, as they shake their fists indignantly at the Heathrow bombers and declare: <quote> "You are making a grave miscalculation." </quote>
+          </p>
+          <p> Their impotence in the face of the IRA 's continuing campaign is matched only by the feeble response of the Ulster Secretary of State Sir Patrick Mayhew who keeps telling us the peace process is <quote> "still on the rails" </quote>. </p>
+          <p> His must be the peace that by-passes all understanding of those who live with the daily nightmare of terrorism and realise that the IRA has absolutely no intention of calling a permanent ceasefire, and a surrender of arms, ammunition and explosives. </p>
+          <p> This view was confirmed by an IRA statement last night which ruled out an end of the terror unless the Government caves into its demands - to talk and to negotiate the ending of the British presence in Northern Ireland. </p>
+          <p> A year has elapsed since SDLP leader John Hume brought Sinn Fein president Gerry Adams in from isolation to a centre stage position and in that time the only people whose cause has been advanced are the Provsionals. </p>
+          <p> As the mortars rain down on Heathrow Airport and killers stalk the streets of our cities and towns of our Province, there is a political instability here not known since the IRA hunger strike of 1981. </p>
+          <p> The Westminster Government has only one option it can take if democracy is to be upheld and real peace returned to this Province. It must move decisively against the terrorists with proper security measures and must make it abundantly clear that the position of Northern Ireland within the United Kingdom is inviolable. </p>
+          <p> Last night 's IRA statement served a purpose in that in clarified to our Government the spurious "peace" agenda republicans are working to. </p>
+          <p> John Major and his Government can no longer afford to be pawns in a process that merely facilitates the terrorists. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/142.00002</textSigle>
+            <title>The Gown</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-001$C">
+          <head>
+            <hi rend="bold"> Rape attack outrage </hi>
+          </head>
+          <p> The death of an 85-year-old West Belfast woman three days after she was brutally raped in her home is an awful indictment of the kind of people who are sadly at loose in our society. </p>
+          <p> Mrs Mary Palmer took the terrible suffering and distress she endured to the grave and everything possible must be done to bring to justice the person or persons responsible for her death. </p>
+          <p> The RUC must be given all the help by the decent people of West Belfast in their inquiries. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/142.00003</textSigle>
+            <title>The Gown</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-001$D">
+          <head>
+            <hi rend="bold"> MORNING VIEW </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Violence must not set the agenda </hi>
+          </head>
+          <p> SDLP leader John Hume 's credibility as a constitutional politician is wearing a bit thin these days as he assumes an increasing role as an apologist for the IRA and Sinn Fein. </p>
+          <p> The Foyle MP 's latest intervention on behalf of the Provos throws the gauntlet down to the Government and shores up the republican argument that there will be no peace until dialogue is opened up with the terrorists. </p>
+          <p> As the IRA mortars Heathrow Airport and murders innocent people on the streets of Northern Ireland, the SDLP and Sinn Fein leaders not surprisingly use a similar form of words to justify the Government parleying with the terrorists, instead of urging them to introduce measures to round them up and bring them to justice. </p>
+          <p> Hume, maintaining the IRA was only firing blanks at Heathrow Airport, says the Government should launch new talks with Sinn Fein to exploit <quote> "the best opportunity in 20 years" </quote> for peace in Northern Ireland. Adams says the search for peace remains the <quote> "greatest challenge facing everyone" </quote> . </p>
+          <p> Having schemed for a year on the best way of edging Northern Ireland out of the United Kingdom, the pair are now audaciously demanding that the IRA and Sinn Fein be allowed a central role in dialogue that will decide on a political solution here. </p>
+          <p> The small matter of guns and explosives under the table while the Provos talk "peace" is of no consequence to the two men. Neither is the view of the unionist majority community in the Province whose citizenship would be gravely threatened if such a treacherous assembly line was set up. </p>
+          <p> Not surprisingly, support for this line is coming from Labour 's Kevin McNamara, who believes that IRA/Sinn Fein have not yet totally rejected the Downing Street Declaration. But so far the Government has spurned the overtures, probably not out of conviction - more out of the realisation that such a move would trigger a dramatic deterioration in the climate in Northern Ireland leading eventually to a doomsday situation which would tragically engulf all the people of these islands. </p>
+          <p> John Hume has significantly moved outside the parameters of the Downing Street Declaration with his demand for talks with the IRA before it calls a permanent cessation of violence and one can only assume that the long-term agenda he is now following for Northern Ireland is identical to the aspirations of those in the Provisional republican movement. The right of the unionist majority to remain British is certainly not part of the scenario he is hatching nor is it in the thinking of those he is finding common cause with these days. </p>
+          <p> Northern Ireland is being pushed dangerously to the precipice by minority politicians whose form of Irish nationalism leaves little room for accommodation with the greater number of people who believe that their interests are best served in maintaining the Union. </p>
+          <p> Dictating a political agenda at gunpoint can have no place in a proper democracy and, were the IRA and Sinn Fein to succeed in bombing the Government to the discussion table, it would herald a disastrous watershed in Anglo-Irish affairs. </p>
+          <p> The Government has got to urgently arrest the situation by making it crystal clear that those engaged in terrorist violence will have no place in any dialogue on the future administration of Northern Ireland, unless they totally renounce violence and surrender their arms, ammunition and explosives. </p>
+          <p> It must also move on to involve in discussions those parties who believe a meaningful form of government can be created within the constitutional confines of Northern Ireland. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/142.00004</textSigle>
+            <title>The Gown</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-001$E">
+          <head>
+            <hi rend="bold"> Evil obscenities </hi>
+          </head>
+          <p> Former Presbyterian Moderator Dr John Dunlop has quite properly castigated the perverse ideology that revels in the terrorist <quote> "spectacular" </quote> and accepts the legitimacy of <quote> "production line" </quote> killings. </p>
+          <p> Dr Dunlop, speaking at the funeral service for murdered RUC officer Jackie Haggan yesterday, said the people who engaged in such activities were not into <quote> "the politics of persuasion" </quote> but were involved in <quote> "naked coercion" </quote> . </p>
+          <p> The Churchmen 's words struck a chord for many in our divided community who have been caught up in the evil of terrorism: <quote> "Violence can have a corrosive effect upon those engaged in it and upon those who suffer the consequences. No matter how often these murders take place, we must try not to allow ourselves to accept them as normal, become insensitive to their effects or be destroyed by them". </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/142.00005</textSigle>
+            <title>The Gown</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1992</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-001$F">
+          <head>
+            <hi rend="bold"> EDITORIAL </hi>
+          </head>
+          <p> Congratulations on your entry to Queen 's you belong to the few of us lucky enough to gain a place at university. I doubt if it was easy, though. When the A-level grades were released, school leavers throughout the country were thrust into the dog eat dog world of confusion and uncertainty as the struggle began - often in vain - to ensure positions in tertiary level education, especially in universities across the water. </p>
+          <p> Except for school leavers who met the required grades, telephone lines were humming under the insistent pressure of concerned prospective students contacting the various academic institutions and organisations to have strangers informing them of their future. </p>
+          <p> The signs of the big squeeze on university places - so apparent this year - have been on the increase over the last few years, rising from 15 <amp> per cent sign </amp> in 1987 to 28 <amp> per cent sign </amp> in 1992. Obviously the government 's target figure of 33 <amp> per cent sign </amp> by the year 2000 is well on course, but are the universities ' facilities in line with government projections? Furthermore, is the government well prepared to finance the demands they have issued for third level education? </p>
+          <p> University resources - whether they are based on library facilities, tutorial sizes or adequate accommodation have been increasingly strained over the past five years. Limitations have been swept aside as the push for more undergraduate places has not been countered with an increase in the government 's spending for education. In fact, John Patten, Minister for Education, has had the gall to reduce by 33 <amp> per cent sign </amp> the fees for arts and social science courses. Regardless of the fact that these faculties have the greatest percentage of undergraduates, the fees set by the government have been drastically cut. </p>
+          <p> The fee per student originally stood at <amp> pound sign </amp> 1,850.00 - it is now <amp> pound sign </amp> 1,300. To rub salt into the wounds of each university - and subsequently each prospective undergraduate - John Patten announced his plan AFTER many universities had begun offering course places on the presumption that undergraduate numbers would rise as in previous years. </p>
+          <p> Universities, as a result, have been forced to freeze arts course levels to remain in line with last year 's figures whilst attempting to attract students to degrees where fees haven't been slashed. It doesn't help matters much when the government claims that their objective is to attract more students to science and technology courses, away from "less useful" arts and social sciences courses. </p>
+          <p> The consequences so far? A lot of students with arts-orientated A-levels who have missed the requirements by a point or two, discovered with dismay that they have to reapply next year - when the competition will be even greater. </p>
+          <p> Mr Patten assures us that expansion should be possible again, but not until 1996 - hardly comforting for this year 's unsuccessful school leavers as they watch those lucky enough to gain places pass by, gown-clad with degrees in tow. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/143.00000</textSigle>
+            <title>Sunday Tribune</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Cathal Mac Coille</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-010$A">
+          <head>
+            <hi rend="bold"> PROFILE </hi>
+          </head>
+          <head>
+            <hi>Catherine McGuinness </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Calm judge with a brief to reconcile </hi>
+          </head>
+          <head>
+            <hi> By Cathal MacCoille </hi>
+          </head>
+          <p> CATHERINE McGuinness 's status as one of the most accomplished and fulfilled figures of her generation was well established before last Friday morning, when she formally opened the Forum for Peace and Reconciliation. </p>
+          <p> Apart from her being a mother, a senator, a political speechwriter, a leading member of the Church of Ireland 's synod, a lawyer and, since last February, a Circuit Court judge, the number of bodies she has served on would be enough work for several people. </p>
+          <p> She has been a member of the Council of State, the Voluntary Health Insurance board, the National Economic and Social Council, the second Commission for the Status of Women, the Oireachtas Joint Committee on Marital Breakdown, and the Incorporated Society for the Promotion of Protestant Schools. She has also chaired the National Social Services Board, the Employment Equality Agency and the National College of Art and Design. </p>
+          <p> Even that list leaves out the inquiry into the Kilkenny incest case, which she chaired – the report 's damming and detailed indictment of the failure of state services to detect and prevent a young girl 's suffering at the hands of her father would have ensured, if she never did anything else, that her contribution to society would be widely acknowledged. </p>
+          <p> Now she has taken on an even more difficult task – chairing a body which aims to reconcile, but which has so far failed to attract those with whom its founders wish to be reconciled. The task of reconciling the absolutist aims of Sinn Fein with those of the parties from Dail Eireann is daunting in itself. And, as if these difficulties were not enough, there are the doubts of all participants that the forum 's debates will be not only inconclusive but marginal to the main event – the negotiations between governments, and between northern parties and the British. </p>
+          <p> Catherine McGuinness was born in 1934 in Belfast where her father was a Church of Ireland minister in Dunmurry. After attending Alexandra College as a boarder, she took a degree in French and Irish at Trinity. </p>
+          <p> At the college 's Cumann Gaelach, she met Proinsias Mac Aonghusa, the journalist and broadcaster whom she later married (they have three children). </p>
+          <p> Their marriage remains a source of fascination, both to their friends and to people who know them only through their public roles, as a union formed by two people who come from different ends of a political and cultural spectrum. The differences are often over-stated. Each took the same route into active politics in the Labour Party of the 1960s (she as a parliamentary assistant and scriptwriter, he as a leading member and Dail candidate); they share a love of the Irish language, of art, and of Paris, which they usually visit at least once a year. </p>
+          <p> It is in their personalities that most people who know them see the greatest difference, although one former colleague of Proinsias Mac Aonghusa in RTE linked this to their different careers. </p>
+          <p>
+            <quote> "She always wanted to <hi rend="italic"> do </hi> things, whereas Proinsias 's main aim in life was to find out who was doing things and why, and if possible to know more than the politicians he was dealing with. The Machiavellian image which he cultivated – and which I don't believe was ever as malign as some people liked to think – was the exact opposite of her style of working." </quote>
+          </p>
+          <p> One friend of the couple said he did not know of any sustained relationship between two such different people. <quote> "They 're like chalk and cheese – they 're total opposites in terms of their personalities, their opinions and their relations with other people." </quote>
+          </p>
+          <p>
+            <quote> "Anyone looking at them would wonder how they co-exist. But they 're extraordinarily close, they 're great company – it 's just one of the mysteries of life how such different people match each other perfectly, but they do." </quote>
+          </p>
+          <p> Another friend said they were often on different sides of an argument. <quote> "Their views on the North would certainly be different. But you never get the sense that they 're disagreeing as part of a deeper agenda, the way you sometimes see with other couples." </quote>
+          </p>
+          <p> When her husband was expelled from the Labour Party in 1967, after several bitter disputes with the leadership, she resigned from her post. </p>
+          <p> She became interested in law in the mid-1970's, as a result of her membership of the Adoption Board. She later recalled how, after becoming a barrister in 1977 (at the age of 42), she met Mella Carroll, now a High Court judge, in the Four Courts robing room. <quote> "Don't let them tell you you can't succeed because you 're a woman," </quote> Carroll told her. </p>
+          <p> Her legal practice was mixed at first, but she later built a high reputation for her work on family law cases. One of her arguments, in favour of a woman 's right to a share in the family home as a result of her work in the home, was upheld by Mr Justice Barr in the High Court. His judgement was overturned by the Supreme Court in 1991, and the issue remains unresolved at a political level. </p>
+          <p> Legal colleagues are unanimous in describing Catherine McGuinness as clear-thinking, hard-working, extremely pleasant to deal with, competent and well-briefed in every case she has undertaken. </p>
+          <p>
+            <quote> "She was seen as competent and hard-working rather than a wonderful advocate," </quote> said one lawyer. <quote> "But it was a great mistake to underestimate her. There 's a touch of steel there, and if a case got nasty, as family law cases sometimes do, she was well able to look after herself." </quote>
+          </p>
+          <p> In the seven months since her appointment as a Circuit Court judge, she has quickly established for herself a reputation for fairness. <quote> "There 's a lot of bitchiness at the Bar, but very few people have a bad word to say about her," </quote> said one lawyer. <quote> "There was a certain element who said that, because her experience was mainly in family law, she would only be able for family law cases, but she 's had several civil and criminal cases since her appointment, and she 's been excellent." </quote>
+          </p>
+          <p>
+            <quote> One of her principal leisure interests is singing with Dublin 's Culwick Choir. Shortly after her appointment as a judge, she appeared with the choir in a performance of Rossini 's Petite Messe Solennelle at the National Concert Hall and always takes part in its charity performances of Handel 's Messiah at Christmas. </quote>
+          </p>
+          <p>
+            <quote> "I can't remember her missing a concert," </quote> said one member of the choir. <quote> "She 's a marvellous person to sing beside because she 's so reliable musically." </quote> She also sings in her local parish church in Kill o' the Grange and will sing when called upon at legal functions. </p>
+          <p> Lawyers regard McGuinness as a perfect choice for the job of chairing the forum. <quote> "She 's very calm, very fair, and she 's always had a real interest in the northern thing," </quote> said one barrister. <quote> "She has the perfect temperament for the job, as well as a deep passion to make a go of it. And, as far as trying to reconcile deep divisions and bitterness is concerned, you could hardly get a better training than in family law cases. The only thing people involved in most marital disputes <hi rend="italic"> don't </hi> do is kill each other." </quote>
+          </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/143.00001</textSigle>
+            <title>Sunday Tribune</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Cathal Mac Coille</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-010$B">
+          <head>
+            <hi rend="bold"> What Else Is Buried In Political Mire? </hi>
+          </head>
+          <p> It is fortunate for Irish politicians that Christmas is about to create a natural break of a week or two in political life in this country. Otherwise the recent cycle of debacles which has already engulfed Albert Reynolds as Taoiseach, Fianna Fail and Labour as partners in government and several individual ministers, might well swamp the entire political system. With each passing day we are getting further evidence of the less-than-wholesome manner in which people in power carry on their business. So far it has not been a pretty sight. The break for Christmas will be a relief. </p>
+          <p> There are few people celebrating the revelations of recent weeks. Even the large anti-Fianna Fail lobby in this country are not triumphant about the way the party has been humiliated in recent weeks. The sight of open warfare in Fianna Fail would normally delight political opponents but this time there is an air of despair among the general public because it is obvious that the Labour party is not a lot better when they get their hands on power. </p>
+          <p> Whether Fine Gael, Democratic Left or the PDs would be any different if and when they become part of the government we cannot yet tell. But what is about power that makes otherwise sensible and honest men and women behave as as of they owned the country and were unanswerable to the general public? How can members of a government so quickly forget that the basis of their power lies not in the chauffeur-driven Mercedes but in the votes of the plain people of Ireland? If they remembered that salient fact they could scarcely become so contemptuous of the voters. </p>
+          <p> This country should have a general election in January so that people of Ireland, in whom power ultimately lies through their franchise, can have their say. It matters little that after the elections we might have roughly the same alignment of political parties in the Dail. After the events of recent weeks all politicians, but particularly Fianna Fail and Labour ones, should be made face the public, knock on doors and answer questions from ordinary people without seeking immunity. It is fair to say that the general public has been shocked and genuinely dismayed at the amount of intrigue and deception which has been shown to operate in government circles in recent weeks. </p>
+          <p> What worries people most is this. What we have witnessed in recent weeks may be just the tip of the iceberg. If so much dubious conduct took place in relation to a minor event such as the appointment of a judge, how much more of the same sort of unsavoury conduct may have taken place over the years in connection with far more serious matters – such as the recent Tax Amnesty for instance? </p>
+          <p> This newspaper and others have often been savaged by Fianna Fail activists in the past few years for daring to criticise the behaviour of politicians. After the revelations of the past three weeks we are entitled to feel justified in our criticism. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/143.00002</textSigle>
+            <title>Sunday Tribune</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author>Cathal Mac Coille</h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-010$C">
+          <head> COMMENT </head>
+          <head>
+            <hi rend="bold"> Opportunities </hi>
+          </head>
+          <p>
+            <hi rend="bold"> In a week in which our hotels and guest houses are full with visitors it is difficult to think that our tourism industry, both locally and at national level, is suffering. It is difficult when there are thousands thronging our streets to believe that, as our front page states today, these are tough times for the city 's hoteliers. </hi>
+          </p>
+          <p> But these few weeks are the only weeks when the 'no vacancies' signs go up in Galway. When our hotels are suffering it is safe to assume that our entire tourism industry and all that depends on it is also, in turn, in a barren period. </p>
+          <p> A recession which still continues to affect our most important markets is a substantial reason for the decline in our tourism market but it is certainly not the only one. </p>
+          <p> As Alan Moody, local chairman of the Irish Hotels ' Federation (IHF) points out in today 's Observer, huge amounts of money have been invested in the hotel industry locally in recent years. Galway has seen a massive increase in the number of 'beds' available over the last few years. An estimated 350 new beds have come on stream due to new hotels and extensions to existing ones not to mention the practical eruption of new guest houses all over the city and its outskirts. </p>
+          <p> Mr. Moody points out that the marketing budget for Bord Failte has been cut in real terms in recent years and that unless there is a substantial increase in that budget we cannot expect an improvement on this region 's or this country 's tourism figures. </p>
+          <p> Why, for example, do we rarely if ever see Japanese tourists on the streets of Galway? Here is a truly massive market that is being practically ignored by this country because Bord Failte cannot afford to market there. The streets of London and almost every major European city are thronged annually by Japanese visitors, yet Ireland remains, no doubt, a complete mystery to the potential Japanese tourist. </p>
+          <p> This is but one example of the lack of foresight and confidence which is depriving this country of potential lucrative business. Tourism is our second most important industry. Let us hope that the calls of Alan Moody and his colleagues will be heeded. </p>
+        </div>
+      </text>
+    </TEI>
+  </teiDoc>
+  <teiDoc>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/144.00000</textSigle>
+            <title>Irish News</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-003$A">
+          <head>
+            <hi rend="bold"> Scrap the play-offs to avoid chaos </hi>
+          </head>
+          <p> YESTERDAY marked the final round of matches in the divisional section of the GAA's second most important competition. </p>
+          <p> However, it will be another couple of months before the destination of the 1994 National League title is decided. </p>
+          <p> A bewildering series of play-off and preliminary play-off games now gets under way, with Ulster counties, as usual, to the fore. </p>
+          <p> All Ireland champions Derry, despite suffering their first defeat in almost a year, are already through to the quarter finals, where they will be joined by a resurgent Armagh and, possibly, by both Down and Donegal. </p>
+          <p> The only certainty at this stage is that, before the Church <amp> ampersand </amp> General trophy is handed over, the GAA is in for another period of inter-county fixture chaos. </p>
+          <p> The backlog of games will complicate preparations for one of the most eagerly awaited Ulster Championship on record, and is bound to result in the indefinite postponement of club matches all over the province. </p>
+          <p> Despite any short-term loss of revenue, the time has surely come to scrap the play-offs, and allow the winners of an enlarged Division One to be declared as national league champions. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/144.00001</textSigle>
+            <title>Irish News</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-003$B">
+          <head>
+            <hi rend="bold"> Irish rainbow </hi>
+          </head>
+          <p>
+            <hi rend="bold"> WHOEVER emerges as Taoiseach from a mould-breaking election in the Republic, Dick Spring is the obvious winner and Albert Reynolds the loser. For a major party to double its representation, as Labour appears to have done, is a spectacular success - making Fianna Fail 's failure to win an overall majority all the more humiliating. Mr Reynolds ' only consolation is that the main Opposition party, Fine Gael, fared even worse, signalling that the days of one-party government in the Republic may have gone for good. The electorate may <sic> havefinally </sic>
+              <corr> have finally </corr> turned away from old-style Civil War politics, dominated by Fianna Fail and Fine Gael, in favour of rainbow coalitions covering the spectrum from Left to Right. </hi>
+          </p>
+          <p> Mr Reynolds paid the penalty for calling an election no one wanted, at a time and on grounds that no other Taoiseach would have chosen. His association with the economic recession - and, coincidentally, with obscure wording on the substantive abortion referendum - encouraged a protest vote against the government, which Labour was able to capitalise upon. A public which has seen its standard of living eroded, and which is suffering record unemployment, gladly seized on Labour 's high-spending promises, even though it may have voted more in hope than expectation. The PDs were seemingly unaffected by their unhappy term in the coalition government - probably because Des O'Malley was regarded as a victim of Fianna Fail chicanery - and Fine Gael seem unable to produce a credible leader. </p>
+          <p> Now begins the difficult business of building a government from the indecision of the election result. Fianna Fail are still unchallenged as the largest party, but their only hope of retaining power is in coalition - almost certainly under a new leader. While almost any combination is possible, the politicians can hardly ignore the electorate 's clear desire for change. Mr Spring might prefer to avoid the difficult economic decisions which will be necessary, in order to build on his popularity, but he is almost obliged to play his part in government, so overwhelming was his mandate. The problem for the next Taoiseach, of whatever colour, will be to convince the country - and the world at large - that his government has the stability to weather future economic and political storms. As far as Northern Ireland is concerned, any government which can show more sensitivity towards the unionist position - which excludes the present Fianna Fail leadership - would be an improvement. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/144.00002</textSigle>
+            <title>Irish News</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-003$C">
+          <head>
+            <hi rend="bold"> Open season </hi>
+          </head>
+          <p> THE Home Secretary's announcement that Sunday trading laws will not be enforced in the run-up to Christmas is surprising in pure legal terms, but is a pragmatic recognition of the fundamental problems arising from existing legislation. Court action on alleged breaches of the Shop Act have been suspended until the European Court of Justice rules on its validity. Eventually MPs are to be allowed a free vote on three options which will reform the law - total deregulation; partial deregulation allowing small shops to open all hours and limited opening for large stores; and a ban on Sunday opening except for specified outlets. </p>
+          <p> The second option seems the fairest, offering a compromise solution. Public opinion would appear to favour more widespread Sunday opening, but it is right that there should be some recognition of the special position of the Sabbath. It is also welcome that any new legislation on opening will contain protection for staff, allowing those with strong Sabbatarian views to opt not to work on that day without prejudicing their position. </p>
+          <p> Drafting a suitable compromise bill which can be enforced may be a delicate task, but should be proceeded with as soon as practicable. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/144.00003</textSigle>
+            <title>Irish News</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-003$D">
+          <head>
+            <hi rend="bold"> Royal dues </hi>
+          </head>
+          <p> The Queen 's voluntary agreement to pay tax on her private income and to prune the Civil List is a welcome and sagacious move. At a stroke she has defused much of the public criticism of the privilege accorded to the Royal Family. She has conceded the principle that the House of Windsor should be treated in fiscal matters in the same manner as her subjects. That, and agreeing to meet the expenses of all but the most senior Royals from her own pocket, will pay a long term dividend in helping to restore the affection of the nation which, to some extent, has been undermined by the behaviour of the younger members of her family. The State will still pay a large part of the cost, but that is a bill which now will be borne more readily by the taxpayer. The whole issue has not been handled well by the Government, which recently indicated that taxation of the Monarch was unlikely. That only served to inflame public opinion. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/144.00004</textSigle>
+            <title>Irish News</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-003$E">
+          <head>
+            <hi rend="bold"> VIEWPOINT </hi>
+          </head>
+          <head>
+            <hi rend="bold"> Plugging loopholes </hi>
+          </head>
+          <head>
+            <hi rend="bold"> IRISH JUSTICE: </hi>
+            <hi rend="italic"> New extradition machinery must be made to work </hi>
+          </head>
+          <p> THERE is no more depressing sight, for anyone hopeful of better relations between Northern Ireland and the Republic, than that of IRA or INLA murder suspects walking free from Dublin courts. It happened again yesterday, when extradition proceedings failed against an Armagh man, wanted in connection with the murder of an army careers officer in Derby two years ago. </p>
+          <p> No evidence was offered, for the simple reason that last month an attempt to extradite another Armagh man, also an INLA suspect, came to nothing. The judge then held that the murder of the Army sergeant was <quote> "political" </quote> - and in any case there could not be a fair trial because of prejudicial newspaper publicity. </p>
+          <p> The Irish state has been saved some legal expenses, but at what a cost to confidence in its ability to deal seriously with the threat of terrorism in another European Union member state. Until new legislation, closing the massive loopholes in the present extradition law, is in place, even those who carried out the mortar attacks on Heathrow would presumably be protected. The law will not be retrospective. </p>
+          <p> The UK has been too tolerant, for too long, of the interminable delays in tightening extradition arrangements. There was an attempt to address the problem as long ago as 1973, in Sunningdale, but substitute measures like extra-territorial courts, where suspects can be tried in the Republic for offences committed in the UK, are generally unsatisfactory. </p>
+          <p> In the past, technical mistakes were made by the British authorities in extradition warrants, which resulted in several failures. This has largely been overcome, but the problem is that the Irish adopted the European Convention on Terrorism - despite warnings - and now have to amend it to eliminate the plea of a "political" motive. </p>
+          <p> The fear must be that even when the law is changed, it will still be possible for the defence to argue that adverse media publicity has ruled out a fair trial. The media must be encouraged to exercise more restraint, but it is impossible to avoid speculation when attacks which kill or endanger hundreds of lives occur. Just because of past events, the Irish judiciary should not assume that terrorist suspects will not get a fair hearing. Otherwise the extradition machinery now being put in place will be a sham, and Anglo-Irish cooperation seen as a one-sided exercise. </p>
+        </div>
+      </text>
+    </TEI>
+    <TEI>
+      <teiHeader>
+        <fileDesc>
+          <titleStmt>
+            <textSigle>EN/144.00005</textSigle>
+            <title>Irish News</title>
+            <domain>PreEdi</domain>
+          </titleStmt>
+          <sourceDesc>
+            <analytic>
+              <h.author> </h.author>
+            </analytic>
+            <imprint>
+              <pubDate type="year">1994</pubDate>
+              <pubDate type="month" />
+              <pubDate type="day" />
+              <pubPlace>
+                <idno type="URI"> </idno>
+              </pubPlace>
+            </imprint>
+          </sourceDesc>
+        </fileDesc>
+      </teiHeader>
+      <text>
+        <div id="W2E-003$F">
+          <head>
+            <hi rend="bold"> In camera? </hi>
+          </head>
+          <head>
+            <hi rend="bold"> POLICE VIDEOS: </hi>
+            <hi rend="italic"> Recording of interrogations could protect both sides </hi>
+          </head>
+          <p> THE call for video and sound recording of interviews with terrorist suspects is the most controversial proposal in Sir Louis Blom-Cooper 's first report. In the view of the Independent Commissioner for Holding Centres recordings would end prisoners ' claims of mistreatment during interrogation. </p>
+          <p> He also argues that it would speed up trials as a significant number of cases hinge on claims about what did or did not happen during police questioning. It is a persuasive argument, although the proposal is strongly opposed by the RUC. </p>
+          <p> The police contend that recordings would be ineffective. A suspect could claim that alleged ill-treatment took place out of camera shot or range of the sound recording equipment. More worryingly, the Chief Constable argues that recording of interviews would inhibit the flow of information. </p>
+          <p> Suspects in police custody are often questioned about a whole range of matters, not just a single incident. Sometimes information can be obtained which does not relate directly to the person detention was recorded such information might be forthcoming. </p>
+          <p> Sir Louis's recommendations suggest a way around this problem. The tapes would be held by a senior police officer and would only be disclosed in very limited circumstances. It should be possible to find a compromise which would satisfy both sides. </p>
+          <p> One suggestion is that a judge, sitting in chambers, could decide on the relevant parts of recordings which would be used as evidence in court if the need arose.
+                That would protect the source of information and also the police from charges of
+                ill-treatment. </p>
         </div>
       </text>
     </TEI>
