diff --git a/Makefile b/Makefile
index 1b96617..7b5877b 100644
--- a/Makefile
+++ b/Makefile
@@ -2,26 +2,26 @@
 
 all: json
 
-./output/corpus.p5.xml: nor2tei.py Makefile
+./output/corpus.p5.xml: eng2tei.py Makefile
 	mkdir -p output
-	python nor2tei.py `find /export/coin/ICC/NO/Originaldaten -name "*.xml"`
+	python eng2tei.py `find /export/coin/ICC/ICC-EN_written_XML_April2023 -name "*.xml"`
 
-icc-nor.p5.xml: ./output/corpus.p5.xml Makefile
-	perl -C255 -pe 's/([^>])\n/$1 /g; s/^\s*([^<])/$1/; s/\&gt /\&gt; /g;' $< | xmllint - > $@
+icc-eng.p5.xml: ./output/corpus.p5.xml Makefile
+	cat $< | xmllint - > $@
 
-icc-nor.zip: icc-nor.p5.xml
+icc-eng.zip: icc-eng.p5.xml
 	pv $< | tei2korapxml -s -tk - > $@
 
-icc-nor.ud.zip: icc-nor.zip
-	korapxml2conllu $< | pv | /usr/local/kl/bin/udpipe2 -r -m norwegian-bokmaal-ud-2.10-220711 | conllu2korapxml > $@
+icc-eng.ud.zip: icc-eng.zip
+	korapxml2conllu $< | pv | /usr/local/kl/bin/udpipe2 -r -m english-partut-ud-2.10-220711 | conllu2korapxml > $@
 
 
-icc-nor.krill.tar: icc-nor.zip icc-nor.ud.zip
-	korapxml2krill archive -w -cfg /vol/corpora/ICC/icc-nor.cfg -i icc-nor.zip -i icc-nor.ud.zip -o icc-nor.krill
+icc-eng.krill.tar: icc-eng.zip icc-eng.ud.zip
+	korapxml2krill archive -w -cfg /vol/corpora/ICC/icc-eng.cfg -i icc-eng.zip -i icc-eng.ud.zip -o icc-eng.krill
 
-json: icc-nor.krill.tar
+json: icc-eng.krill.tar
 	rm -rf json
 	mkdir -p json
-	tar -C json -xf icc-nor.krill.tar
-	rsync -avz --delete json korap@korap-worker-07:/opt/korap/icc/nor/KorAP-Docker/
-	ssh korap@korap-worker-07 cd /opt/korap/icc/nor/KorAP-Docker && rm -rf index && mkdir -p index && docker run  -u root --rm -v /opt/korap/icc/nor/KorAP-Docker:/data:z korap/kustvakt Krill-Indexer.jar -c /kustvakt/kustvakt-lite.conf -i /data/json -o /data/index/
+	tar -C json -xf icc-eng.krill.tar
+	rsync -avz --delete json korap@korap-worker-07:/opt/korap/icc/eng/KorAP-Docker/
+	ssh korap@korap-worker-07 cd /opt/korap/icc/eng/KorAP-Docker && rm -rf index && mkdir -p index && docker run  -u root --rm -v /opt/korap/icc/eng/KorAP-Docker:/data:z korap/kustvakt Krill-Indexer.jar -c /kustvakt/kustvakt-lite.conf -i /data/json -o /data/index/
diff --git a/nor2tei.py b/eng2tei.py
similarity index 98%
rename from nor2tei.py
rename to eng2tei.py
index e02564b..be20615 100644
--- a/nor2tei.py
+++ b/eng2tei.py
@@ -69,7 +69,7 @@
         fileDesc = ET.SubElement(teiHeader, "fileDesc")
         titleStmt = ET.SubElement(fileDesc, "titleStmt")
         textSigle = ET.SubElement(titleStmt, "textSigle")
-        textSigle.text = "NO/" + f"{j:03}" + "." + f"{i:05}"
+        textSigle.text = "EN/" + f"{j:03}" + "." + f"{i:05}"
         sourceDesc = ET.SubElement(fileDesc, "sourceDesc")
         analytic = ET.SubElement(sourceDesc, "analytic")
         title = ET.SubElement(titleStmt, "title")
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>
