diff --git a/NOTICE b/NOTICE
index 6bb0f6b..7f0619c 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,4 +1,4 @@
-Apache log4j 1.3 component model
+Apache Component Companion for log4j 1.2.
 Copyright 2007 The Apache Software Foundation
 
 This product includes software developed at
diff --git a/build.xml b/build.xml
index b745d1b..5bbea07 100644
--- a/build.xml
+++ b/build.xml
@@ -21,7 +21,7 @@
 This is a minimal build file to support Gump.
 Use of Maven to build this component is recommended.
 
-Specify -Dcompanion.jar=foo.jar to test an previously prepared jar.
+Specify -Dcompanion.jar=foo.jar to test a previously prepared jar.
 
 -->
 <project default="test">
@@ -30,7 +30,7 @@
 	
 	<!--  project details  -->
     <property name="project.name" value="apache-log4j-component"/>
-    <property name="project.title" value="Component"/>
+    <property name="project.title" value="Apache Component Companion for log4j 1.2."/>
     <property name="project.version" value="1.0"/>
     <property name="project.jar" value="${project.name}-${project.version}.jar"/>
     
@@ -38,7 +38,7 @@
     <property name="m2_repo" location="${user.home}/.m2/repository"/>
 
 	<!--  Versions for dependencies   -->
-    <property name="log4j.version" value="1.2.8"/>
+    <property name="log4j.version" value="1.2.9"/>
     <property name="junit.version" value="3.8.1"/>
 	
 	<!--  Dependency locations - assumed to be in Maven 2 repository   -->
@@ -97,7 +97,7 @@
     	   debug="${javac.debug}"
     	   target="${javac.target}"
     	   source="${javac.source}"
-    	   classpath="${log4j.jar}:${junit.jar}:${companion.jar}"/>
+    	   classpath="${companion.jar}:${log4j.jar}:${junit.jar}"/>
     	<copy todir="target/test-classes" overwrite="true">
     		<fileset dir="src/test/resources"/>
     	</copy>
@@ -106,18 +106,15 @@
 
     <target name="test" depends="test-compile" description="Run unit tests">
     	<junit printsummary="yes" fork="true" dir="target">
-    	    <classpath path="target/test-classes:${companion.jar}:${log4j.jar}"/>
+    	    <classpath path="target/test-classes:${companion.jar}:${log4j.jar}:${junit.jar}"/>
     		<batchtest>
     			<fileset dir="src/test/java/">
+    				<include name="**/Test*.java"/>
     				<include name="**/*TestCase.java"/>
-    				<include name="**/*Test.java"/>
     			</fileset>
     	    </batchtest>
     	    <formatter type="plain" usefile="false"/>
     	</junit>
     </target>    
-	
-	<!--  This target is executed by Gump.  -->
-	<target name="gump" depends="test"/>
 
 </project>
diff --git a/pom.xml b/pom.xml
index fa851fd..cf2ad36 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
   <groupId>log4j</groupId>
   <artifactId>apache-log4j-component</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.0</version>
   <name>Apache Component Companion for log4j 1.2.</name>
   <description>This companion emulates the log4j 1.3 Component Framework to
   simplify the back-porting of code that made use of its services.  It does
@@ -67,9 +67,9 @@
 	</license>
 </licenses>
 <scm>
-	<connection>scm:svn:http://svn.apache.org/repos/asf/logging/log4j/companions/component/trunk</connection>
-	<developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/log4j/companions/component/trunk</developerConnection>
-	<url>http://svn.apache.org/viewcvs.cgi/logging/log4j/companions/component/trunk</url>
+	<connection>scm:svn:http://svn.apache.org/repos/asf/logging/log4j/companions/component/tags/v1_0_rc3</connection>
+	<developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/log4j/companions/component/tags/v1_0_rc3</developerConnection>
+	<url>http://svn.apache.org/viewcvs.cgi/logging/log4j/companions/component/tags/v1_0_rc3</url>
 </scm>
 <organization>
     <name>Apache Software Foundation</name>
@@ -181,7 +181,7 @@
     <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
-      <version>1.2.8</version>
+      <version>1.2.9</version>
     </dependency>    
   </dependencies>
   <reporting>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 1293164..e9d8ee4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -17,10 +17,10 @@
 -->
 <document>
   <properties>
-    <title>Component</title>
+    <title>Apache Component Companion for log4j 1.2.</title>
   </properties>
   <body>
-    <release version="1.0" date="2007-06-21" description="Initial release">
+    <release version="1.0" date="2007-06-27" description="Initial release">
       <action issue="42094" type="add">
         Initial release of Component framework backported from log4j 1.3.
       </action>
diff --git a/src/main/resources/META-INF/NOTICE b/src/main/resources/META-INF/NOTICE
index 6bb0f6b..7f0619c 100644
--- a/src/main/resources/META-INF/NOTICE
+++ b/src/main/resources/META-INF/NOTICE
@@ -1,4 +1,4 @@
-Apache log4j 1.3 component model
+Apache Component Companion for log4j 1.2.
 Copyright 2007 The Apache Software Foundation
 
 This product includes software developed at
diff --git a/src/test/java/org/apache/log4j/util/Compare.java b/src/test/java/org/apache/log4j/util/Compare.java
index 44a3c7c..a23c8d0 100644
--- a/src/test/java/org/apache/log4j/util/Compare.java
+++ b/src/test/java/org/apache/log4j/util/Compare.java
@@ -1,9 +1,10 @@
 /*
- * Copyright 1999,2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  * 
  *      http://www.apache.org/licenses/LICENSE-2.0
  * 
@@ -34,7 +35,7 @@
           final String fileName) throws IOException {
       String resourceName = fileName;
       if (fileName.startsWith("witness/")) {
-          resourceName = fileName.substring(8);
+          resourceName = fileName.substring(fileName.lastIndexOf('/') + 1);
       }
       InputStream is = testClass.getResourceAsStream(resourceName);
       if (is == null) {
