diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index cf3e0a7..523b831 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -78400,17 +78400,17 @@ o )show Places
 \cross{PLACES}{?\~{}=?} &
 \cross{PLACES}{coerce} &
 \cross{PLACES}{create} &
-\cross{PLACES}{degree} &
-\cross{PLACES}{foundPlaces} \\
+\cross{PLACES}{degree} \\
+\cross{PLACES}{foundPlaces} &
 \cross{PLACES}{hash} &
 \cross{PLACES}{itsALeaf!} &
 \cross{PLACES}{latex} &
-\cross{PLACES}{leaf?} &
+\cross{PLACES}{leaf?} \\
 \cross{PLACES}{localParam} &
-\cross{PLACES}{reduce} \\
+\cross{PLACES}{reduce} &
 \cross{PLACES}{setDegree!} &
 \cross{PLACES}{setFoundPlacesToEmpty} &
-\cross{PLACES}{setParam!} &&
+\cross{PLACES}{setParam!} 
 \end{tabular}
 
 <<domain PLACES Places>>=
@@ -78432,7 +78432,112 @@ Places(K):Exports == Implementation where
 <<PLACES.dotabb>>=
 "PLACES" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PLACES"];
 "NSDPS" [color="#88FF44",href="bookvol10.3.pdf#nameddest=NSDPS"];
+"PLCS" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PLCS"]
 "PLACES" -> "NSDPS"
+"PLACES" -> "PLCS"
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{domain PLACESPS PlacesOverPseudoAlgebraicClosureOfFiniteField}
+<<PlacesOverPseudoAlgebraicClosureOfFiniteField.input>>=
+)set break resume
+)sys rm -f PlacesOverPseudoAlgebraicClosureOfFiniteField.output
+)spool PlacesOverPseudoAlgebraicClosureOfFiniteField.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show PlacesOverPseudoAlgebraicClosureOfFiniteField
+--R PlacesOverPseudoAlgebraicClosureOfFiniteField K: FiniteFieldCategory  is a domain constructor
+--R Abbreviation for PlacesOverPseudoAlgebraicClosureOfFiniteField is PLACESPS 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for PLACESPS 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (Integer,%) -> Divisor %        ?+? : (%,%) -> Divisor %
+--R -? : % -> Divisor %                   ?-? : (%,%) -> Divisor %
+--R ?=? : (%,%) -> Boolean                coerce : % -> OutputForm
+--R create : Symbol -> %                  degree : % -> PositiveInteger
+--R foundPlaces : () -> List %            hash : % -> SingleInteger
+--R itsALeaf! : % -> Void                 latex : % -> String
+--R leaf? : % -> Boolean                  reduce : List % -> Divisor %
+--R ?~=? : (%,%) -> Boolean              
+--R ?+? : (%,Divisor %) -> Divisor %
+--R ?+? : (Divisor %,%) -> Divisor %
+--R ?-? : (%,Divisor %) -> Divisor %
+--R ?-? : (Divisor %,%) -> Divisor %
+--R create : List PseudoAlgebraicClosureOfFiniteField K -> %
+--R ?.? : (%,Integer) -> PseudoAlgebraicClosureOfFiniteField K
+--R localParam : % -> List NeitherSparseOrDensePowerSeries PseudoAlgebraicClosureOfFiniteField K
+--R setDegree! : (%,PositiveInteger) -> Void
+--R setFoundPlacesToEmpty : () -> List %
+--R setParam! : (%,List NeitherSparseOrDensePowerSeries PseudoAlgebraicClosureOfFiniteField K) -> Void
+--R
+--E 1
+
+)spool
+)lisp (bye)
+@
+<<PlacesOverPseudoAlgebraicClosureOfFiniteField.help>>=
+====================================================================
+PlacesOverPseudoAlgebraicClosureOfFiniteField examples
+====================================================================
+
+See Also:
+o )show PlacesOverPseudoAlgebraicClosureOfFiniteField
+
+@
+\pagehead{PlacesOverPseudoAlgebraicClosureOfFiniteField}{PLACESPS}
+\pagepic{ps/v103placesoverpseudoalgebraicclosureoffinitefield.eps}%
+{PLACESPS}{1.00}
+
+{\bf Exports:}\\
+\begin{tabular}{lllll}
+\cross{PLACESPS}{-?} &
+\cross{PLACESPS}{?*?} &
+\cross{PLACESPS}{?+?} &
+\cross{PLACESPS}{?-?} &
+\cross{PLACESPS}{?.?} \\
+\cross{PLACESPS}{?=?} &
+\cross{PLACESPS}{?\~{}=?} &
+\cross{PLACESPS}{coerce} &
+\cross{PLACESPS}{create} &
+\cross{PLACESPS}{degree} \\
+\cross{PLACESPS}{foundPlaces} &
+\cross{PLACESPS}{hash} &
+\cross{PLACESPS}{itsALeaf!} &
+\cross{PLACESPS}{latex} &
+\cross{PLACESPS}{leaf?} \\
+\cross{PLACESPS}{localParam} &
+\cross{PLACESPS}{reduce} &
+\cross{PLACESPS}{setDegree!} &
+\cross{PLACESPS}{setFoundPlacesToEmpty} &
+\cross{PLACESPS}{setParam!} 
+\end{tabular}
+
+<<domain PLACESPS PlacesOverPseudoAlgebraicClosureOfFiniteField>>=
+)abbrev domain PLACESPS PlacesOverPseudoAlgebraicClosureOfFiniteField
+++ Author: Gaetan Hache
+++ Date Created: 17 nov 1992
+++ Date Last Updated: May 2010 by Tim Daly
+++ Description:  
+++ The following is part of the PAFF package
+PlacesOverPseudoAlgebraicClosureOfFiniteField(K):Exports
+ == Implementation where
+
+  K:FiniteFieldCategory
+  KK  ==> PseudoAlgebraicClosureOfFiniteField(K)
+  PCS ==> NeitherSparseOrDensePowerSeries(KK)
+  
+  Exports ==> PlacesCategory(KK,PCS) 
+    
+  Implementation ==>   Plcs(KK,PCS)
+@
+<<PLACESPS.dotabb>>=
+"PLACESPS" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PLACESPS"];
+"PACOFF" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PACOFF"]
+"PLACESPS" -> "PACOFF"
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -126001,6 +126106,7 @@ Note that this code is not included in the generated catdef.spad file.
 <<domain PARSURF ParametricSurface>>
 <<domain PFR PartialFraction>>
 <<domain PLACES Places>>
+<<domain PLACESPS PlacesOverPseudoAlgebraicClosureOfFiniteField>>
 <<domain PRTITION Partition>>
 <<domain PATTERN Pattern>>
 <<domain PATLRES PatternMatchListResult>>
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index b176b4e..1f8b634 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -24090,6 +24090,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed.
    (|Pi| . HACKPI)
    (|PiCoercions| . PICOERCE)
    (|Places| . PLACES)
+   (|PlacesOverPseudoAlgebraicClosureOfFiniteField| . PLACESPS)
    (|Plcs| . PLCS)
    (|PointFunctions2| . PTFUNC2)
    (|PolyGroebner| . PGROEB)
diff --git a/books/ps/v103placesoverpseudoalgebraicclosureoffinitefield.eps b/books/ps/v103placesoverpseudoalgebraicclosureoffinitefield.eps
new file mode 100644
index 0000000..cc58e49
--- /dev/null
+++ b/books/ps/v103placesoverpseudoalgebraicclosureoffinitefield.eps
@@ -0,0 +1,266 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (root) root
+%%Title: pic
+%%Pages: 1
+%%BoundingBox: 36 36 132 152
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {	% i j npages
+	/npages exch def
+	/j exch def
+	/i exch def
+	/str 10 string def
+	npages 1 gt {
+		gsave
+			coordfont setfont
+			0 0 moveto
+			(\() show i str cvs show (,) show j str cvs show (\)) show
+		grestore
+	} if
+} bind def
+
+/set_font {
+	findfont exch
+	scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext {			% width text
+	/text exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			[] 0 setdash
+			text stringwidth pop width exch sub text length div 0 text ashow
+		} if
+	grestore
+} def
+
+/boxprim {				% xcorner ycorner xsize ysize
+		4 2 roll
+		moveto
+		2 copy
+		exch 0 rlineto
+		0 exch rlineto
+		pop neg 0 rlineto
+		closepath
+} bind def
+
+/ellipse_path {
+	/ry exch def
+	/rx exch def
+	/y exch def
+	/x exch def
+	matrix currentmatrix
+	newpath
+	x y translate
+	rx ry scale
+	0 0 1 0 360 arc
+	setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+	[	% layer color sequence - darkest to lightest
+		[0 0 0]
+		[.2 .8 .8]
+		[.4 .8 .8]
+		[.6 .8 .8]
+		[.8 .8 .8]
+	]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+	layercolorseq curlayer 1 sub layerlen mod get
+	aload pop sethsbcolor
+	/nodecolor {nopcolor} def
+	/edgecolor {nopcolor} def
+	/graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+	/myupper exch def
+	/mylower exch def
+	curlayer mylower lt
+	curlayer myupper gt
+	or
+	{invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 132 152
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 96 116 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% PLACESPS
+gsave
+[ /Rect [ 0 72 88 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=PLACESPS) >>
+  /Subtype /Link
+/ANN pdfmark
+0.273 0.733 1.000 nodecolor
+newpath 88 108 moveto
+0 108 lineto
+0 72 lineto
+88 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.273 0.733 1.000 nodecolor
+newpath 88 108 moveto
+0 108 lineto
+0 72 lineto
+88 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+7.5 85.9 moveto 73 (PLACESPS) alignedtext
+grestore
+% PACOFF
+gsave
+[ /Rect [ 8 0 80 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=PACOFF) >>
+  /Subtype /Link
+/ANN pdfmark
+0.273 0.733 1.000 nodecolor
+newpath 80 36 moveto
+8 36 lineto
+8 0 lineto
+80 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.273 0.733 1.000 nodecolor
+newpath 80 36 moveto
+8 36 lineto
+8 0 lineto
+80 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+16 13.9 moveto 56 (PACOFF) alignedtext
+grestore
+% PLACESPS->PACOFF
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 44 72 moveto
+44 64 44 55 44 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 47.5 46 moveto
+44 36 lineto
+40.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 47.5 46 moveto
+44 36 lineto
+40.5 46 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/changelog b/changelog
index c202536..7444da6 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20100518 tpd src/axiom-website/patches.html 20100518.03.tpd.patch
+20100518 tpd src/algebra/Makefile help and test for PLACESPS
+20100518 tod books/bookvol5 expose PLACESPS
+20100518 tpd books/bookvol10.3 add PLACESPS
+20100518 tpd books/ps/v103placesoverpseudoalgebraicclosureoffinitefield.eps
 20100518 tpd src/axiom-website/patches.html 20100518.02.tpd.patch
 20100518 tpd books/ps/v103places.eps add new constraint
 20100518 tpd src/axiom-website/patches.html 20100518.01.tpd.patch
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 26409f6..f1760dd 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -12119,7 +12119,7 @@ LAYER17=\
   ${OUT}/OCTCT2.o   ${OUT}/ODEPAL.o   ${OUT}/ODERTRIC.o ${OUT}/OMEXPR.o   \
   ${OUT}/PACEXTC.o  ${OUT}/PADE.o     \
   ${OUT}/PAN2EXPR.o ${OUT}/PFO.o      ${OUT}/PFOQ.o     ${OUT}/PICOERCE.o \
-  ${OUT}/PLACES.o   \
+  ${OUT}/PLACES.o   ${OUT}/PLACESPS.o \
   ${OUT}/PMASSFS.o  ${OUT}/PMFS.o     ${OUT}/PMPREDFS.o ${OUT}/PROJPLPS.o \
   ${OUT}/PSETPK.o   \
   ${OUT}/QUAT.o     ${OUT}/QUATCT2.o  ${OUT}/RADFF.o    ${OUT}/RDEEF.o    \
@@ -14118,6 +14118,16 @@ LAYER17=\
 /*"PLACES" -> {"SGROUP"; "MONOID"; "LMODULE"; "BMODULE"; "RMODULE"}*/
 /*"PLACES" -> {"ALGEBRA"; "MODULE"; "ENTIRER"; "UFD"; "DIVRING"}*/
 
+"PLACESPS" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PLACESPS"]
+/*"PLACESPS" -> {"PLCS"; "PLACESC"; "SETCATD"; "SETCAT"; "BASTYPE"; "KOERCE"}*/
+"PLACESPS" -> "PACOFF"
+/*"PLACESPS" -> {"PACFFC"; "FFIELDC"; "FPC"; "FIELD"; "EUCDOM"; "PID"}*/
+/*"PLACESPS" -> {"GCDDOM"; "INTDOM"; "COMRING"; "RING"; "RNG"; "ABELGRP"}*/
+/*"PLACESPS" -> {"CABMON"; "ABELMON"; "ABELSG"; "SGROUP"; "MONOID"}*/
+/*"PLACESPS" -> {"LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"; "MODULE"}*/
+/*"PLACESPS" -> {"ENTIRER"; "UFD"; "DIVRING"; "CHARNZ"; "FINITE"; "STEP"}*/
+/*"PLACESPS" -> {"DIFRING"; "PACPERC"}*/
+
 "PICOERCE" [color="#FF4488",href="bookvol10.4.pdf#nameddest=PICOERCE"]
 /*"PICOERCE" -> {"ORDSET"; "SETCAT"; "BASTYPE"; "KOERCE"; "INTDOM"}*/
 /*"PICOERCE" -> {"COMRING"; "RING"; "RNG"; "ABELGRP"; "CABMON"; "ABELMON"}*/
@@ -16579,6 +16589,21 @@ ${MID}/PLACES.nrlib/code.o: ${MID}/PLACES.spad
 	      | ${INTERPSYS} >${TMP}/trace ; \
 	   fi )
 @
+<<newcode>>=
+ 
+PLACESPSDEPS = PLACESC SETCATD PACOFF PACFFC PACPERC NSDPS PLCS LOCPOWC DIV
+
+${MID}/PLACESPS.nrlib/code.o: ${MID}/PLACESPS.spad
+	@echo P3 making ${MID}/PLACESPS.nrlib/code.o from ${MID}/PLACESPS.spad
+	@ (cd ${MID} ; \
+	   if [ -z "${NOISE}" ] ; then \
+	    echo -e ")lib ${PLACESPSDEPS} \n )co PLACESPS.spad" \
+              | ${INTERPSYS} ; \
+           else \
+	    echo -e ")lib ${PLACESPSDEPS} \n )co PLACESPS.spad" \
+	      | ${INTERPSYS} >${TMP}/trace ; \
+	   fi )
+@
 
 \section{Broken Files}
 These files are Aldor files
@@ -17402,6 +17427,7 @@ SPADHELP=\
  ${HELP}/Permutation.help \
  ${HELP}/Places.help \
  ${HELP}/PlacesCategory.help \
+ ${HELP}/PlacesOverPseudoAlgebraicClosureOfFiniteField.help \
  ${HELP}/PlaneAlgebraicCurvePlot.help \
  ${HELP}/Plcs.help \
  ${HELP}/Plot.help \
@@ -17578,6 +17604,7 @@ REGRESS= \
  Permutation.regress \
  Places.regress \
  PlacesCategory.regress \
+ PlacesOverPseudoAlgebraicClosureOfFiniteField.regress \
  PlaneAlgebraicCurvePlot.regress \
  Plcs.regress \
  Plot.regress \
@@ -18926,6 +18953,22 @@ ${HELP}/PlacesCategory.help: ${BOOKS}/bookvol10.2.pamphlet
             >${INPUT}/PlacesCategory.input
 	@echo "PlacesCategory (PLACESC)" >>${HELPFILE}
 
+${HELP}/PlacesOverPseudoAlgebraicClosureOfFiniteField.help: \
+            ${BOOKS}/bookvol10.3.pamphlet
+	@echo 7908 create \
+            PlacesOverPseudoAlgebraicClosureOfFiniteField.help from \
+            ${BOOKS}/bookvol10.3.pamphlet
+	@${TANGLE} -R"PlacesOverPseudoAlgebraicClosureOfFiniteField.help" \
+           ${BOOKS}/bookvol10.3.pamphlet \
+           >${HELP}/PlacesOverPseudoAlgebraicClosureOfFiniteField.help
+	@cp ${HELP}/PlacesOverPseudoAlgebraicClosureOfFiniteField.help \
+          ${HELP}/PLACESPS.help
+	@${TANGLE} -R"PlacesOverPseudoAlgebraicClosureOfFiniteField.input" \
+          ${BOOKS}/bookvol10.3.pamphlet \
+          >${INPUT}/PlacesOverPseudoAlgebraicClosureOfFiniteField.input
+	@echo "PlacesOverPseudoAlgebraicClosureOfFiniteField (PLACESPS)" \
+          >>${HELPFILE}
+
 ${HELP}/PlaneAlgebraicCurvePlot.help: ${BOOKS}/bookvol10.3.pamphlet
 	@echo 7910 create PlaneAlgebraicCurvePlot.help from \
             ${BOOKS}/bookvol10.3.pamphlet
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index b55a19d..dc641c8 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2751,5 +2751,7 @@ books/bookvol10.3 add Plcs<br/>
 books/bookvol10.3 add Places<br/>
 <a href="patches/20100518.02.tpd.patch">20100518.02.tpd.patch</a>
 books/ps/v103places.eps add new constraint<br/>
+<a href="patches/20100518.03.tpd.patch">20100518.03.tpd.patch</a>
+books/bookvol10.3 add PlacesOverPseudoAlgebraicClosureOfFiniteField
  </body>
 </html>
