Index: maven-profile/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java
===================================================================
--- maven-profile/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java	(revision 569677)
+++ maven-profile/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java	(working copy)
@@ -22,13 +22,14 @@
 import org.apache.maven.profiles.io.xpp3.ProfilesXpp3Reader;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.interpolation.EnvarBasedValueSource;
 import org.codehaus.plexus.util.interpolation.RegexBasedInterpolator;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
-import java.io.FileReader;
 import java.io.IOException;
+import java.io.Reader;
 import java.io.StringReader;
 import java.io.StringWriter;
 
@@ -48,14 +49,14 @@
         if ( profilesXml.exists() )
         {
             ProfilesXpp3Reader reader = new ProfilesXpp3Reader();
-            FileReader fileReader = null;
+            Reader profileReader = null;
             try
             {
-                fileReader = new FileReader( profilesXml );
+                profileReader = ReaderFactory.newXmlReader( profilesXml );
                 
                 StringWriter sWriter = new StringWriter();
                 
-                IOUtil.copy( fileReader, sWriter );
+                IOUtil.copy( profileReader, sWriter );
                 
                 String rawInput = sWriter.toString();
                 
@@ -78,7 +79,7 @@
             }
             finally
             {
-                IOUtil.close( fileReader );
+                IOUtil.close( profileReader );
             }
         }
 
Index: maven-settings/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
===================================================================
--- maven-settings/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java	(revision 569677)
+++ maven-settings/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java	(working copy)
@@ -27,14 +27,15 @@
 import org.apache.maven.settings.validation.SettingsValidator;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.interpolation.EnvarBasedValueSource;
 import org.codehaus.plexus.util.interpolation.PropertiesBasedValueSource;
 import org.codehaus.plexus.util.interpolation.RegexBasedInterpolator;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
-import java.io.FileReader;
 import java.io.IOException;
+import java.io.Reader;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.Iterator;
@@ -148,10 +149,10 @@
         {
             getLogger().debug( "Settings file is a proper file. Reading." );
 
-            FileReader reader = null;
+            Reader reader = null;
             try
             {
-                reader = new FileReader( settingsFile );
+                reader = ReaderFactory.newXmlReader( settingsFile );
 
                 SettingsXpp3Reader modelReader = new SettingsXpp3Reader();
 
Index: maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java
===================================================================
--- maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java	(revision 569677)
+++ maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java	(working copy)
@@ -22,8 +22,8 @@
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.project.AbstractMavenProjectTestCase;
+import org.codehaus.plexus.util.ReaderFactory;
 
-import java.io.FileReader;
 import java.io.Reader;
 import java.util.List;
 
@@ -219,7 +219,7 @@
     private ModelValidationResult validate( String testName )
         throws Exception
     {
-        Reader input = new FileReader( getFileForClasspathResource( "validation/" + testName ) );
+        Reader input = ReaderFactory.newXmlReader( getFileForClasspathResource( "validation/" + testName ) );
 
         MavenXpp3Reader reader = new MavenXpp3Reader();
 
Index: maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
===================================================================
--- maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java	(revision 569677)
+++ maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java	(working copy)
@@ -78,16 +78,14 @@
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.io.FileReader;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringReader;
-import java.io.StringWriter;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -136,8 +134,7 @@
 */
 
 /**
- * @version $Id: DefaultMavenProjectBuilder.java,v 1.37 2005/03/08 01:55:22
- *          trygvis Exp $
+ * @version $Id$
  */
 public class DefaultMavenProjectBuilder
     extends AbstractLogEnabled
@@ -636,7 +633,7 @@
 
         Model model = new Model();
 
-        model.setModelVersion( "4.0.0" );
+        model.setModelVersion( MAVEN_MODEL_VERSION );
 
         model.setArtifactId( projectArtifact.getArtifactId() );
 
@@ -1127,7 +1124,7 @@
         Reader reader = null;
         try
         {
-            reader = new FileReader( file );
+            reader = ReaderFactory.newXmlReader( file );
             return readModel( projectId, file.getAbsolutePath(), reader, strict );
         }
         catch ( FileNotFoundException e )
@@ -1149,15 +1146,11 @@
     private Model readModel( String projectId, String pomLocation, Reader reader, boolean strict )
         throws IOException, InvalidProjectModelException
     {
-        StringWriter sw = new StringWriter();
+        String modelSource = IOUtil.toString( reader );
 
-        IOUtil.copy( reader, sw );
-
-        String modelSource = sw.toString();
-
-        if ( modelSource.indexOf( "<modelVersion>4.0.0" ) < 0 )
+        if ( modelSource.indexOf( "<modelVersion>" + MAVEN_MODEL_VERSION ) < 0 )
         {
-            throw new InvalidProjectModelException( projectId, pomLocation, "Not a v4.0.0 POM." );
+            throw new InvalidProjectModelException( projectId, pomLocation, "Not a v" + MAVEN_MODEL_VERSION  + " POM." );
         }
 
         StringReader sReader = new StringReader( modelSource );
@@ -1176,10 +1169,10 @@
     private Model readModel( String projectId, URL url, boolean strict )
         throws ProjectBuildingException
     {
-        InputStreamReader reader = null;
+        Reader reader = null;
         try
         {
-            reader = new InputStreamReader( url.openStream() );
+            reader = ReaderFactory.newXmlReader( url.openStream() );
             return readModel( projectId, url.toExternalForm(), reader, strict );
         }
         catch ( IOException e )
Index: maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
===================================================================
--- maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java	(revision 569677)
+++ maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java	(working copy)
@@ -38,12 +38,13 @@
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
-import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.Reader;
 import java.io.Writer;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -477,10 +478,10 @@
 
         MavenEmbedder.writeSettings( settingsFile, s );
 
-        FileReader reader = null;
+        Reader reader = null;
         try
         {
-            reader = new FileReader( settingsFile );
+            reader = ReaderFactory.newXmlReader( settingsFile );
             Settings result = new SettingsXpp3Reader().read( reader );
 
             assertEquals( localRepoPath, result.getLocalRepository() );
Index: maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
===================================================================
--- maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java	(revision 569677)
+++ maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java	(working copy)
@@ -80,6 +80,7 @@
 import org.codehaus.plexus.component.repository.exception.ComponentRepositoryException;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
 import org.codehaus.plexus.logging.LoggerManager;
+import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 import org.jdom.Document;
@@ -88,9 +89,9 @@
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStreamWriter;
 import java.io.Reader;
 import java.io.Writer;
 import java.net.URL;
@@ -226,7 +227,7 @@
     public Model readModel( File file )
         throws XmlPullParserException, IOException
     {
-        Reader reader = new FileReader( file );
+        Reader reader = ReaderFactory.newXmlReader( file );
 
         Model model;
 
@@ -265,8 +266,6 @@
                                       Settings settings )
         throws IOException
     {
-        Writer fileWriter = new FileWriter( file );
-
         SettingsValidator settingsValidator = new DefaultSettingsValidator();
 
         SettingsValidationResult validationResult = settingsValidator.validate( settings );
@@ -284,6 +283,8 @@
 
         String encoding = settings.getModelEncoding() != null ? settings.getModelEncoding() : "UTF-8";
 
+        Writer fileWriter = new OutputStreamWriter( new FileOutputStream( file ), encoding );
+
         Format format = Format.getPrettyFormat().setEncoding( encoding );
 
         try
@@ -299,7 +300,7 @@
     public static Settings readSettings( File file )
         throws IOException, SettingsConfigurationException
     {
-        Reader fileReader = new FileReader( file );
+        Reader fileReader = ReaderFactory.newXmlReader( file );
 
         SettingsValidator settingsValidator = new DefaultSettingsValidator();
 
@@ -739,7 +740,7 @@
         {
             try
             {
-                fileReader = new FileReader( configuration.getUserSettingsFile() );
+                fileReader = ReaderFactory.newXmlReader( configuration.getUserSettingsFile() );
 
                 new SettingsXpp3Reader().read( fileReader );
             }
@@ -763,7 +764,7 @@
         {
             try
             {
-                fileReader = new FileReader( configuration.getGlobalSettingsFile() );
+                fileReader = ReaderFactory.newXmlReader( configuration.getGlobalSettingsFile() );
 
                 new SettingsXpp3Reader().read( fileReader );
             }

