diff -ruN fxp-2.0.orig/src/Apps/Canon/canon.mlb fxp-2.0.mine/src/Apps/Canon/canon.mlb
--- fxp-2.0.orig/src/Apps/Canon/canon.mlb	1970-01-01 01:00:00.000000000 +0100
+++ fxp-2.0.mine/src/Apps/Canon/canon.mlb	2004-12-08 19:32:19.000000000 +0100
@@ -0,0 +1,15 @@
+ann
+  "warnMatch true"
+  "sequenceUnit true"
+in
+  local
+    $(MLTON_ROOT)/basis/basis.mlb
+    ../../fxlib.mlb
+  in
+    canonOptions.sml
+    canonEncode.sml
+    canonOutput.sml
+    canonHooks.sml
+    canon.sml
+  end
+end
diff -ruN fxp-2.0.orig/src/Apps/Canon/canon.sml fxp-2.0.mine/src/Apps/Canon/canon.sml
--- fxp-2.0.orig/src/Apps/Canon/canon.sml	2004-06-25 18:42:59.000000000 +0200
+++ fxp-2.0.mine/src/Apps/Canon/canon.sml	2004-12-08 19:33:26.000000000 +0100
@@ -78,3 +78,4 @@
 	 end
    end
 
+val _ = Canon.canon(CommandLine.name (), CommandLine.arguments ())
diff -ruN fxp-2.0.orig/src/Apps/Copy/copyEncode.sml fxp-2.0.mine/src/Apps/Copy/copyEncode.sml
--- fxp-2.0.orig/src/Apps/Copy/copyEncode.sml	2004-06-25 18:42:59.000000000 +0200
+++ fxp-2.0.mine/src/Apps/Copy/copyEncode.sml	2004-12-08 19:18:47.000000000 +0100
@@ -126,7 +126,7 @@
 		  | _ => if c<>q andalso validChar(f,c) then putChar(f,c) else putCharRef(f,c)
 				   
 	    val f1 = putChar(f,q)
-	    val f2 = Vector.foldli putOne f1 (cv,0,NONE)
+	    val f2 = Vector.foldli putOne f1 cv
 	    val f3 = putChar(f2,q)
 	 in f3
 	 end
diff -ruN fxp-2.0.orig/src/Apps/Copy/copy.mlb fxp-2.0.mine/src/Apps/Copy/copy.mlb
--- fxp-2.0.orig/src/Apps/Copy/copy.mlb	1970-01-01 01:00:00.000000000 +0100
+++ fxp-2.0.mine/src/Apps/Copy/copy.mlb	2004-12-08 19:18:27.000000000 +0100
@@ -0,0 +1,15 @@
+ann
+  "warnMatch true"
+  "sequenceUnit true"
+in
+  local
+    $(MLTON_ROOT)/basis/basis.mlb
+    ../../fxlib.mlb
+  in
+    copyOptions.sml
+    copyEncode.sml
+    copyOutput.sml
+    copyHooks.sml
+    copy.sml
+  end
+end
diff -ruN fxp-2.0.orig/src/Apps/Copy/copy.sml fxp-2.0.mine/src/Apps/Copy/copy.sml
--- fxp-2.0.orig/src/Apps/Copy/copy.sml	2004-06-25 18:43:00.000000000 +0200
+++ fxp-2.0.mine/src/Apps/Copy/copy.sml	2004-12-08 19:23:22.000000000 +0100
@@ -78,3 +78,4 @@
 	 end
    end
 
+val _ = Copy.copy(CommandLine.name (), CommandLine.arguments ())
diff -ruN fxp-2.0.orig/src/Apps/Esis/esis.mlb fxp-2.0.mine/src/Apps/Esis/esis.mlb
--- fxp-2.0.orig/src/Apps/Esis/esis.mlb	1970-01-01 01:00:00.000000000 +0100
+++ fxp-2.0.mine/src/Apps/Esis/esis.mlb	2004-12-08 19:40:40.000000000 +0100
@@ -0,0 +1,15 @@
+ann
+  "warnMatch true"
+  "sequenceUnit true"
+in
+  local
+    $(MLTON_ROOT)/basis/basis.mlb
+    ../../fxlib.mlb
+  in
+    esisOptions.sml
+    esisData.sml
+    esisOutput.sml
+    esisHooks.sml
+    esis.sml
+  end
+end
diff -ruN fxp-2.0.orig/src/Apps/Esis/esis.sml fxp-2.0.mine/src/Apps/Esis/esis.sml
--- fxp-2.0.orig/src/Apps/Esis/esis.sml	2004-06-25 18:43:00.000000000 +0200
+++ fxp-2.0.mine/src/Apps/Esis/esis.sml	2004-12-08 19:34:08.000000000 +0100
@@ -85,3 +85,4 @@
 	 end
    end
 
+val _ = Esis.esis(CommandLine.name (), CommandLine.arguments ())
diff -ruN fxp-2.0.orig/src/Apps/Null/null.mlb fxp-2.0.mine/src/Apps/Null/null.mlb
--- fxp-2.0.orig/src/Apps/Null/null.mlb	1970-01-01 01:00:00.000000000 +0100
+++ fxp-2.0.mine/src/Apps/Null/null.mlb	2004-12-08 19:40:52.000000000 +0100
@@ -0,0 +1,14 @@
+ann
+  "warnMatch true"
+  "sequenceUnit true"
+in
+  local
+    $(MLTON_ROOT)/basis/basis.mlb
+    ../../fxlib.mlb
+  in
+    nullOptions.sml
+    nullHooks.sml
+    nullHard.sml
+    null.sml
+  end
+end
diff -ruN fxp-2.0.orig/src/Apps/Null/null.sml fxp-2.0.mine/src/Apps/Null/null.sml
--- fxp-2.0.orig/src/Apps/Null/null.sml	2004-06-25 18:42:58.000000000 +0200
+++ fxp-2.0.mine/src/Apps/Null/null.sml	2004-12-08 19:34:45.000000000 +0100
@@ -79,3 +79,4 @@
 	 end
    end
 
+val _ = Null.null(CommandLine.name (), CommandLine.arguments ())
diff -ruN fxp-2.0.orig/src/Apps/Viz/viz.mlb fxp-2.0.mine/src/Apps/Viz/viz.mlb
--- fxp-2.0.orig/src/Apps/Viz/viz.mlb	1970-01-01 01:00:00.000000000 +0100
+++ fxp-2.0.mine/src/Apps/Viz/viz.mlb	2004-12-08 19:35:39.000000000 +0100
@@ -0,0 +1,13 @@
+ann
+  "warnMatch true"
+  "sequenceUnit true"
+in
+  local
+    $(MLTON_ROOT)/basis/basis.mlb
+    ../../fxlib.mlb
+  in
+    vizOptions.sml
+    vizHooks.sml
+    viz.sml
+  end
+end
diff -ruN fxp-2.0.orig/src/Apps/Viz/viz.sml fxp-2.0.mine/src/Apps/Viz/viz.sml
--- fxp-2.0.orig/src/Apps/Viz/viz.sml	2004-06-25 18:43:01.000000000 +0200
+++ fxp-2.0.mine/src/Apps/Viz/viz.sml	2004-12-08 19:35:57.000000000 +0100
@@ -84,3 +84,4 @@
 	 end
    end
 
+val _ = Viz.viz(CommandLine.name (), CommandLine.arguments ())
diff -ruN fxp-2.0.orig/src/fxlib.mlb fxp-2.0.mine/src/fxlib.mlb
--- fxp-2.0.orig/src/fxlib.mlb	1970-01-01 01:00:00.000000000 +0100
+++ fxp-2.0.mine/src/fxlib.mlb	2004-12-08 19:18:07.000000000 +0100
@@ -0,0 +1,105 @@
+ann
+  "deadCode true"
+  "warnMatch true"
+  "sequenceUnit true"
+in
+  local
+    $(MLTON_ROOT)/basis/basis.mlb
+  in
+  config.sml
+  Util/utilCompare.sml
+  Util/utilString.sml
+  Util/utilError.sml
+  Util/utilHash.sml
+  Util/utilInt.sml
+  Util/utilList.sml
+  Util/utilTime.sml
+  Util/intLists.sml
+  Util/intSets.sml
+  Util/options.sml
+  Util/SymDict/key.sml
+  Util/SymDict/dict.sml
+  Util/SymDict/symbolTable.sml
+  Util/SymDict/intSetDict.sml
+  Util/SymDict/intDict.sml
+  Util/SymDict/intListDict.sml
+  Util/SymDict/stringDict.sml
+  Unicode/Chars/uniChar.sml
+  Unicode/Chars/charClasses.sml
+  Unicode/Chars/charVecDict.sml
+  Unicode/Chars/dataDict.sml
+  Unicode/Chars/uniRanges.sml
+  Unicode/Chars/uniClasses.sml
+  Unicode/Chars/testClasses.sml
+  Unicode/Uri/uriDecode.sml
+  Unicode/Uri/uriEncode.sml
+  Unicode/Uri/uri.sml
+  Unicode/Uri/uriDict.sml
+  Unicode/encoding.sml
+  Unicode/Encode/encodeBasic.sml
+  Unicode/Encode/encodeError.sml
+  Unicode/Encode/encodeMisc.sml
+  Unicode/Encode/encode.sml
+  Unicode/Decode/decodeFile.sml
+  Unicode/Decode/decodeError.sml
+  Unicode/Decode/decodeMisc.sml
+  Unicode/Decode/decodeUtil.sml
+  Unicode/Decode/decodeUcs2.sml
+  Unicode/Decode/decodeUcs4.sml
+  Unicode/Decode/decodeUtf16.sml
+  Unicode/Decode/decodeUtf8.sml
+  Unicode/Decode/decode.sml
+  Parser/version.sml
+  Parser/Dfa/dfaData.sml
+  Parser/Dfa/dfaError.sml
+  Parser/Dfa/dfaOptions.sml
+  Parser/Dfa/dfaUtil.sml
+  Parser/Dfa/dfaPassOne.sml
+  Parser/Dfa/dfaPassTwo.sml
+  Parser/Dfa/dfaPassThree.sml
+  Parser/Dfa/dfaString.sml
+  Parser/Dfa/dfa.sml
+  Parser/Error/errorData.sml
+  Parser/Error/errorString.sml
+  Parser/Error/errorMessage.sml
+  Parser/Error/errorUtil.sml
+  Parser/Error/expected.sml
+  Parser/Error/errors.sml
+  Parser/Base/baseData.sml
+  Parser/Base/baseString.sml
+  Parser/Base/base.sml
+  Parser/Params/dtd.sml
+  Parser/Params/hookData.sml
+  Parser/Params/hooks.sml
+  Parser/Params/ignore.sml
+  Parser/Params/parserOptions.sml
+  Parser/Params/resolve.sml
+  Parser/entities.sml
+  Parser/Dtd/dtdDeclare.sml
+  Parser/Dtd/dtdAttributes.sml
+  Parser/Dtd/dtdManager.sml
+  Parser/Parse/parseBase.sml
+  Parser/Parse/parseNames.sml
+  Parser/Parse/parseMisc.sml
+  Parser/Parse/parseXml.sml
+  Parser/Parse/parseRefs.sml
+  Parser/Parse/parseLiterals.sml
+  Parser/Parse/parseTags.sml
+  Parser/Parse/parseDecl.sml
+  Parser/Parse/parseDtd.sml
+  Parser/Parse/parseContent.sml
+  Parser/Parse/parseDocument.sml
+  Catalog/catData.sml
+  Catalog/catDtd.sml
+  Catalog/catError.sml
+  Catalog/catParams.sml
+  Catalog/catFile.sml
+  Catalog/catHooks.sml
+  Catalog/catOptions.sml
+  Catalog/socatParse.sml
+  Catalog/catParse.sml
+  Catalog/catalog.sml
+  Catalog/catResolve.sml
+  genRandom.sml
+  end
+end
diff -ruN fxp-2.0.orig/src/Parser/Dfa/dfaPassTwo.sml fxp-2.0.mine/src/Parser/Dfa/dfaPassTwo.sml
--- fxp-2.0.orig/src/Parser/Dfa/dfaPassTwo.sml	2004-06-25 18:42:52.000000000 +0200
+++ fxp-2.0.mine/src/Parser/Dfa/dfaPassTwo.sml	2004-12-08 19:02:00.000000000 +0100
@@ -72,6 +72,6 @@
 
 	    val _ = do_cm (nil,true) cmi
 
-	 in Array.extract (table,0,NONE)
+	 in Array.vector table
 	 end
     end
diff -ruN fxp-2.0.orig/src/Parser/Dfa/dfaString.sml fxp-2.0.mine/src/Parser/Dfa/dfaString.sml
--- fxp-2.0.orig/src/Parser/Dfa/dfaString.sml	2004-06-25 18:42:52.000000000 +0200
+++ fxp-2.0.mine/src/Parser/Dfa/dfaString.sml	2004-12-08 19:02:48.000000000 +0100
@@ -68,11 +68,11 @@
 	    (fn (i,q,yet) => if q<0 then yet 
 			     else " "::Elem2String (i+lo)::"->"::State2String q::yet)
 	    (if fin then [" [Final]"] else nil)
-		(tab,0,NONE))
+		tab)
 	   
 	fun Dfa2String Elem2String tab =
 	   String.concat 
 	   (Vector.foldri
 	    (fn (q,row,yet) => State2String q::":"::Row2String Elem2String row::yet)
-	    nil (tab,0,NONE))
+	    nil tab)
     end
diff -ruN fxp-2.0.orig/src/Parser/Dfa/dfaUtil.sml fxp-2.0.mine/src/Parser/Dfa/dfaUtil.sml
--- fxp-2.0.orig/src/Parser/Dfa/dfaUtil.sml	2004-06-25 18:42:52.000000000 +0200
+++ fxp-2.0.mine/src/Parser/Dfa/dfaUtil.sml	2004-12-08 19:01:35.000000000 +0100
@@ -124,7 +124,7 @@
 	    val tab = Array.array(hi-lo+1,dfaError)
 	    val _ = app (fn (q,a) => Array.update (tab,a-lo,q)) flw
 	 in 
-	    (lo,hi,Array.extract (tab,0,NONE),fin)
+	    (lo,hi,Array.vector tab,fin)
 	 end
 
    end
diff -ruN fxp-2.0.orig/src/Parser/Dtd/dtdAttributes.sml fxp-2.0.mine/src/Parser/Dtd/dtdAttributes.sml
--- fxp-2.0.orig/src/Parser/Dtd/dtdAttributes.sml	2004-06-25 18:42:53.000000000 +0200
+++ fxp-2.0.mine/src/Parser/Dtd/dtdAttributes.sml	2004-12-08 19:09:21.000000000 +0100
@@ -65,7 +65,7 @@
 				     ord(String.sub(s,1))-65,
 				     true)) 
 	       iso639codes
-	 in Vector.tabulate(26,fn i => Array.extract (Array.sub(arr,i),0,NONE))
+	 in Vector.tabulate(26,fn i => Array.vector (Array.sub(arr,i)))
 	 end
 
       (*--------------------------------------------------------------------*)
diff -ruN fxp-2.0.orig/src/Parser/entities.sml fxp-2.0.mine/src/Parser/entities.sml
--- fxp-2.0.orig/src/Parser/entities.sml	2004-06-25 18:42:55.000000000 +0200
+++ fxp-2.0.mine/src/Parser/entities.sml	2004-12-08 19:08:04.000000000 +0100
@@ -238,9 +238,9 @@
 	    | CLOSED(_,_,_,NORMAL(_,other)) => closeAll other
 	    | INT(_,_,_,(_,other)) => closeAll other
 	    | EXT1(dec,_,_,_,SPECIAL _) => ignore(decClose dec)
-	    | EXT1(dec,_,_,_,NORMAL(_,other)) => (decClose dec; closeAll other)
+	    | EXT1(dec,_,_,_,NORMAL(_,other)) => (ignore (decClose dec); closeAll other)
 	    | EXT2(_,_,_,_,_,_,(dec,_,SPECIAL _)) => ignore(decClose dec)
-	    | EXT2(_,_,_,_,_,_,(dec,_,NORMAL(_,other))) => (decClose dec; closeAll other)
+	    | EXT2(_,_,_,_,_,_,(dec,_,NORMAL(_,other))) => (ignore (decClose dec); closeAll other)
 
       (*--------------------------------------------------------------------*)
       (* is this entity already on the stack?                               *)
diff -ruN fxp-2.0.orig/src/Parser/Params/dtd.sml fxp-2.0.mine/src/Parser/Params/dtd.sml
--- fxp-2.0.orig/src/Parser/Params/dtd.sml	2004-06-25 18:42:53.000000000 +0200
+++ fxp-2.0.mine/src/Parser/Params/dtd.sml	2004-12-08 19:05:46.000000000 +0100
@@ -289,10 +289,10 @@
 	    val _ = map (fn i => Array.update(preRedef,i,false)) [1,2,3,4,5]
 	    val _ = GenEnt2Index dtd [0wx2D] (* "-" *)
 	    val _ = ParEnt2Index dtd [0wx2D] (* "-" *)
-	    val _ = Vector.appi 
+	    val _ = VectorSlice.appi 
 	       (fn (_,(name,lit,cs)) 
 		=> (setGenEnt dtd (GenEnt2Index dtd name,(GE_INTERN(lit,cs),false)))) 
-	       (predefined,1,NONE)
+	       (VectorSlice.slice (predefined,1,NONE))
 	 in ()
 	 end
 
diff -ruN fxp-2.0.orig/src/Parser/Parse/parseContent.sml fxp-2.0.mine/src/Parser/Parse/parseContent.sml
--- fxp-2.0.orig/src/Parser/Parse/parseContent.sml	2004-06-25 18:42:54.000000000 +0200
+++ fxp-2.0.mine/src/Parser/Parse/parseContent.sml	2004-12-08 19:14:16.000000000 +0100
@@ -587,7 +587,7 @@
 	       val _ = Array.update(dataBuffer,0,c0)
 
 	       fun data_hook (i,(a,q)) = 
-		  hookData(a,((!pos0,getPos q),Array.extract(dataBuffer,0,SOME i),false))
+		  hookData(a,((!pos0,getPos q),ArraySlice.vector(ArraySlice.slice(dataBuffer,0,SOME i)),false))
 	       fun takeOne (c,qE,i,aq as (a,q)) = 
 		  if i<DATA_BUFSIZE then (i+1,aq) before Array.update(dataBuffer,i,c)
 		  else let val a1 = data_hook(i,(a,qE))
diff -ruN fxp-2.0.orig/src/Unicode/Chars/charClasses.sml fxp-2.0.mine/src/Unicode/Chars/charClasses.sml
--- fxp-2.0.orig/src/Unicode/Chars/charClasses.sml	2004-06-25 18:42:55.000000000 +0200
+++ fxp-2.0.mine/src/Unicode/Chars/charClasses.sml	2004-12-08 18:53:31.000000000 +0100
@@ -91,7 +91,7 @@
       (*--------------------------------------------------------------------*)
       fun initialize(min,max) = 
 	 Array.array((Chars.toInt max-Chars.toInt min+1) div 32+1,0wx0):MutableClass
-      fun finalize arr = Array.extract(arr,0,NONE)
+      fun finalize arr = Array.vector arr
 	 
       (*--------------------------------------------------------------------*)
       (* add a single character to a CharClass.                             *)
diff -ruN fxp-2.0.orig/src/Unicode/Chars/uniChar.sml fxp-2.0.mine/src/Unicode/Chars/uniChar.sml
--- fxp-2.0.orig/src/Unicode/Chars/uniChar.sml	2004-06-25 18:42:55.000000000 +0200
+++ fxp-2.0.mine/src/Unicode/Chars/uniChar.sml	2004-12-08 18:51:49.000000000 +0100
@@ -108,10 +108,12 @@
 	    if len<=maxlen orelse maxlen=0 
 	       then Data2String (Vector2Data vec)
 	    else let 
-		    val cs1 = Vector.foldri 
-		       (fn (_,c,cs) => c::cs) nil (vec,0,SOME (maxlen div 2))
-		    val cs2 = Vector.foldri 
-		       (fn (_,c,cs) => c::cs) nil (vec,len-3-maxlen div 2,NONE)
+		    val cs1 = VectorSlice.foldri 
+		       (fn (_,c,cs) => c::cs) nil 
+		       (VectorSlice.slice (vec,0,SOME (maxlen div 2)))
+		    val cs2 = VectorSlice.foldri 
+		       (fn (_,c,cs) => c::cs) nil 
+		       (VectorSlice.slice (vec,len-3-maxlen div 2,NONE))
 		 in Data2String cs1^"..."^Data2String cs2
 		 end
 	 end
diff -ruN fxp-2.0.orig/src/Unicode/Uri/uriEncode.sml fxp-2.0.mine/src/Unicode/Uri/uriEncode.sml
--- fxp-2.0.orig/src/Unicode/Uri/uriEncode.sml	2004-06-25 18:42:56.000000000 +0200
+++ fxp-2.0.mine/src/Unicode/Uri/uriEncode.sml	2004-12-08 18:55:28.000000000 +0100
@@ -73,7 +73,7 @@
 						   in c2::c1:: #"%"::s
 						   end) 
 			      s (encodeCharUtf8 c)) 
-	    nil (cv,0,NONE)
+	    nil cv
 	 in String.implode (rev revd)
 	 end
 
@@ -85,7 +85,7 @@
 				 else let val (c1,c2) = Byte2Cc (Char2Byte c)
 				      in c2::c1:: #"%"::s
 				      end)) 
-	    nil (cv,0,NONE)
+	    nil cv
 	 in String.implode (rev revd)
 	 end
 
diff -ruN fxp-2.0.orig/src/Unicode/Uri/uri.sml fxp-2.0.mine/src/Unicode/Uri/uri.sml
--- fxp-2.0.orig/src/Unicode/Uri/uri.sml	2004-06-25 18:42:56.000000000 +0200
+++ fxp-2.0.mine/src/Unicode/Uri/uri.sml	2004-12-08 18:56:13.000000000 +0100
@@ -154,7 +154,7 @@
 
       fun convertCommand str (src,dst) =
 	 let 
-	    val s = Substring.all str
+	    val s = Substring.full str
 	    fun doit ss s = 
 	       if Substring.isEmpty s then ss
 	       else let val (sl,sr) = Substring.splitr (fn c => #"%"<>c) s
@@ -162,12 +162,12 @@
 		       else let val sl' =  Substring.trimr 1 sl
 			    in case Substring.first sr
 				 of SOME #"1" => let val sr' = Substring.triml 1 sr
-						 in doit (Substring.all src::sr'::ss) sl'
+						 in doit (Substring.full src::sr'::ss) sl'
 						 end
 				  | SOME #"2" => let val sr' = Substring.triml 1 sr
-						 in doit (Substring.all dst::sr'::ss) sl'
+						 in doit (Substring.full dst::sr'::ss) sl'
 						 end
-				  | _ => doit (Substring.all "%"::sr::ss) sl'
+				  | _ => doit (Substring.full "%"::sr::ss) sl'
 			    end
 		    end
 	    val ss = doit nil s
diff -ruN fxp-2.0.orig/src/Util/intSets.sml fxp-2.0.mine/src/Util/intSets.sml
--- fxp-2.0.orig/src/Util/intSets.sml	2004-06-25 18:42:57.000000000 +0200
+++ fxp-2.0.mine/src/Util/intSets.sml	2004-12-08 18:50:04.000000000 +0100
@@ -48,9 +48,10 @@
       val !! = W.notb
 
       fun normalize (vec:IntSet) = 
-	 let val max = Vector.foldli
-	    (fn (i,w,max) => if w=0wx0 then i else max) 0 (vec,0,NONE)
-	 in Vector.extract (vec,0,SOME max)
+	 let val max = VectorSlice.foldli
+	    (fn (i,w,max) => if w=0wx0 then i else max) 0 
+	    (VectorSlice.slice (vec,0,NONE))
+	 in VectorSlice.vector (VectorSlice.slice (vec,0,SOME max))
 	 end
 
       val emptyIntSet = Vector.fromList nil : IntSet
@@ -88,7 +89,7 @@
 	    val size = Vector.length vec
 	 in 
 	    if size>idx 
-	       then Vector.mapi (fn (i,x) => if i=idx then x||mask else x) (vec,0,NONE)
+	       then Vector.mapi (fn (i,x) => if i=idx then x||mask else x) vec
 	    else Vector.tabulate 
 	       (idx+1,fn i => if i<size then Vector.sub(vec,i) else if i=idx then mask else 0w0)
 	 end
@@ -100,7 +101,7 @@
 	    val vec1 = if size<=idx then vec
 		       else let val mask = !! (0w1 << (Word.fromInt (n mod wordSize)))
 			    in Vector.mapi 
-			       (fn (i,x) => if i=idx then x && mask else x) (vec,0,NONE)
+			       (fn (i,x) => if i=idx then x && mask else x) vec
 			    end
 	 in normalize vec1
 	 end
diff -ruN fxp-2.0.orig/src/Util/SymDict/dict.sml fxp-2.0.mine/src/Util/SymDict/dict.sml
--- fxp-2.0.orig/src/Util/SymDict/dict.sml	2004-06-25 18:42:56.000000000 +0200
+++ fxp-2.0.mine/src/Util/SymDict/dict.sml	2004-12-08 18:43:36.000000000 +0100
@@ -230,7 +230,7 @@
                in ()
                end
          in 
-	    Array.appi addTo (oldTab,0,NONE)
+	    Array.appi addTo oldTab
          end
 
       (*--------------------------------------------------------------------*)
@@ -316,8 +316,8 @@
       (*--------------------------------------------------------------------*)
       fun printDict X2String ({desc,tab,count,...}:'a Dict) = 
          (print (desc^" dictionary:\n");
-          Array.appi 
+          ArraySlice.appi 
           (fn (n,(key,value)) =>
            print ("  "^Int.toString n^": "^Key.toString key^" = "^X2String value^"\n")) 
-          (!tab,0,SOME (!count))) 
+          (ArraySlice.slice (!tab,0,SOME (!count))))
    end
diff -ruN fxp-2.0.orig/src/Util/SymDict/symbolTable.sml fxp-2.0.mine/src/Util/SymDict/symbolTable.sml
--- fxp-2.0.orig/src/Util/SymDict/symbolTable.sml	2004-06-25 18:42:56.000000000 +0200
+++ fxp-2.0.mine/src/Util/SymDict/symbolTable.sml	2004-12-08 18:47:27.000000000 +0100
@@ -219,7 +219,7 @@
 		  val _ = Array.update(newTab,i,key)
 	       in ()
 	       end
-	    val _ = Array.appi addToNew (!tab,0,NONE)
+	    val _ = ArraySlice.appi addToNew (ArraySlice.slice (!tab,0,NONE))
 
 	    val _ = tab   := newTab
 	    val _ = hash  := newHash
@@ -300,15 +300,15 @@
       (* extract the contents of a symbol table to a vector.                *)
       (*--------------------------------------------------------------------*)
       fun extractSymTable({count,tab,...}:SymTable) = 
-	 Array.extract(!tab,0,SOME(!count))
+	 ArraySlice.vector (ArraySlice.slice (!tab,0,SOME(!count)))
 
       (*--------------------------------------------------------------------*)
       (* print the contents of the symbol table.                            *)
       (*--------------------------------------------------------------------*)
       fun printSymTable ({desc,tab,count,...}:SymTable) = 
 	 (print (desc^" table:\n");
-	  Array.appi 
+	  ArraySlice.appi 
 	  (fn (n,key) =>
 	   print ("  "^Int.toString n^": "^Key.toString key^"\n")) 
-	  (!tab,0,SOME (!count))) 
+	  (ArraySlice.slice (!tab,0,SOME (!count))))
    end
diff -ruN fxp-2.0.orig/src/Util/utilString.sml fxp-2.0.mine/src/Util/utilString.sml
--- fxp-2.0.orig/src/Util/utilString.sml	2004-06-25 18:42:57.000000000 +0200
+++ fxp-2.0.mine/src/Util/utilString.sml	2004-12-08 18:40:23.000000000 +0100
@@ -230,6 +230,9 @@
 	 if Vector.length vec=0 then pre^post
 	 else String.concat
 	    (pre::X2String(Vector.sub(vec,0))::
-	     Vector.foldri (fn (_,x,yet) => sep::X2String x::yet) [post] (vec,1,NONE))
+	     VectorSlice.foldri 
+	       (fn (_,x,yet) => sep::X2String x::yet) 
+	       [post] 
+	       (VectorSlice.slice (vec,1,NONE)))
       fun Vector2String X2String vec = Vector2xString ("#[",",","]") X2String vec
    end
diff -ruN fxp-2.0.orig/src/Util/utilTime.sml fxp-2.0.mine/src/Util/utilTime.sml
--- fxp-2.0.orig/src/Util/utilTime.sml	2004-06-25 18:42:57.000000000 +0200
+++ fxp-2.0.mine/src/Util/utilTime.sml	2004-12-08 18:41:59.000000000 +0100
@@ -12,8 +12,8 @@
 (*--------------------------------------------------------------------------*)
 signature UtilTime =
    sig
-      val time  : ('a -> 'b) -> 'a -> 'b * {usr:Time.time, sys:Time.time, gc:Time.time} 
-      val timeN : int -> ('a -> 'b) -> 'a -> 'b * {usr:Time.time, sys:Time.time, gc:Time.time} 
+      val time  : ('a -> 'b) -> 'a -> 'b * {usr:Time.time, sys:Time.time } 
+      val timeN : int -> ('a -> 'b) -> 'a -> 'b * {usr:Time.time, sys:Time.time } 
    end
 
 structure UtilTime : UtilTime =

