diff --git a/build.xml b/build.xml
index ee0867d..b745d1b 100644
--- a/build.xml
+++ b/build.xml
@@ -21,6 +21,8 @@
 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.
+
 -->
 <project default="test">
     <!--  use build.properties file or command line to override these properties  -->
@@ -29,14 +31,14 @@
 	<!--  project details  -->
     <property name="project.name" value="apache-log4j-component"/>
     <property name="project.title" value="Component"/>
-    <property name="project.version" value="0.1-SNAPSHOT"/>
+    <property name="project.version" value="1.0"/>
     <property name="project.jar" value="${project.name}-${project.version}.jar"/>
     
     <!--  Location of local Maven 2 repository   -->
     <property name="m2_repo" location="${user.home}/.m2/repository"/>
 
 	<!--  Versions for dependencies   -->
-    <property name="log4j.version" value="1.2.14"/>
+    <property name="log4j.version" value="1.2.8"/>
     <property name="junit.version" value="3.8.1"/>
 	
 	<!--  Dependency locations - assumed to be in Maven 2 repository   -->
@@ -46,8 +48,8 @@
        location="${m2_repo}/log4j/log4j/${log4j.version}/log4j-${log4j.version}.jar"/>
 
     <!--   Java compiler settings   -->
-    <property name="javac.source" value="1.3"/>
-    <property name="javac.target" value="1.2"/>   
+    <property name="javac.source" value="1.2"/>
+    <property name="javac.target" value="1.1"/>   
     <property name="javac.deprecation" value="true"/>
     <property name="javac.debug" value="true"/>
        
@@ -58,7 +60,7 @@
     </target>
     
     
-    <target name="compile" depends="init" description="Compile implementation files">
+    <target name="compile" depends="init" unless="companion.jar" description="Compile implementation files">
         <mkdir dir="target/classes"/>
     	<javac destdir="target/classes"
            srcdir="src/main/java"
@@ -72,15 +74,12 @@
     	</copy>
     </target>
     
-    <target name="jar" depends="compile" description="Create jar">
+    <target name="jar" depends="compile" unless="companion.jar" description="Create jar">
     	<jar destfile="target/${project.jar}"
     	     basedir="target/classes">
     	  	<manifest>
     			<attribute name="Built-By" value="${user.name}"/>
     			<section name="common">
-      				<attribute name="Specification-Title" value="${project.title}"/>
-      				<attribute name="Specification-Version" value="${project.version}"/>
-      				<attribute name="Specification-Vendor" value="Apache Software Foundation"/>
       				<attribute name="Implementation-Title" value="${project.title}"/>
       				<attribute name="Implementation-Version" value="${project.version}"/> 
       				<attribute name="Implementation-Vendor" value="Apache Software Foundation"/>
@@ -89,7 +88,8 @@
     	</jar>
     </target>    
 
-    <target name="test-compile" depends="compile" description="Compile test files">
+    <target name="test-compile" depends="jar" description="Compile test files">
+	    <property name="companion.jar" value="target/${project.jar}"/>
         <mkdir dir="target/test-classes"/>
     	<javac destdir="target/test-classes"
            srcdir="src/test/java"
@@ -97,7 +97,7 @@
     	   debug="${javac.debug}"
     	   target="${javac.target}"
     	   source="${javac.source}"
-    	   classpath="${log4j.jar}:${junit.jar}:target/classes"/>
+    	   classpath="${log4j.jar}:${junit.jar}:${companion.jar}"/>
     	<copy todir="target/test-classes" overwrite="true">
     		<fileset dir="src/test/resources"/>
     	</copy>
@@ -106,7 +106,7 @@
 
     <target name="test" depends="test-compile" description="Run unit tests">
     	<junit printsummary="yes" fork="true" dir="target">
-    	    <classpath path="target/test-classes:target/classes:${log4j.jar}"/>
+    	    <classpath path="target/test-classes:${companion.jar}:${log4j.jar}"/>
     		<batchtest>
     			<fileset dir="src/test/java/">
     				<include name="**/*TestCase.java"/>
diff --git a/pom.xml b/pom.xml
index 1fce415..4bc6ae8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,19 +15,18 @@
  limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>log4j</groupId>
   <artifactId>apache-log4j-component</artifactId>
   <packaging>jar</packaging>
-  <version>0.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
   not provide any immediately useful functionality to log4j by itself,
   but is used by Receivers and Chainsaw.</description>
-  <url>http://logging.apache.org/log4j/companions/component</url>
+  <url>http://logging.apache.org:80/log4j/companions/component</url>
   <issueManagement>
     <system>Bugzilla</system>
     <url>http://issues.apache.org/bugzilla/</url>
@@ -60,14 +59,6 @@
 		</otherArchives>
 	</mailingList>
 </mailingLists>
-<developers>
-    <developer>
-    	<id>carnold</id>
-    	<name>Curt Arnold</name>
-    	<email>carnold@apache.org</email>
-    	<timezone>-6</timezone>
-    </developer>
- </developers>
 <licenses>
 	<license>
 		<name>Apache License, Version 2.0</name>
@@ -76,9 +67,9 @@
 	</license>
 </licenses>
 <scm>
-	<connection>scm:svn:http://svn.apache.org/repos/asf/logging/sandbox/log4j/component</connection>
-	<developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/sandbox/log4j/component</developerConnection>
-	<url>http://svn.apache.org/viewcvs.cgi/logging/sandbox/log4j/component</url>
+	<connection>scm:svn:http://svn.apache.org/repos/asf/logging/log4j/companions/component/tags/v1_0_rc1</connection>
+	<developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/log4j/companions/component/tags/v1_0_rc1</developerConnection>
+	<url>http://svn.apache.org/viewcvs.cgi/logging/log4j/companions/component/tags/v1_0_rc1</url>
 </scm>
 <organization>
     <name>Apache Software Foundation</name>
@@ -87,17 +78,6 @@
 <build>
     <plugins>
       <plugin>
-        <artifactId>maven-checkstyle-plugin</artifactId>
-        <dependencies>
-          <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.14</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
           <workingDirectory>target</workingDirectory>
@@ -106,23 +86,88 @@
       <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
-            <source>1.3</source>
-            <target>1.3</target>
+            <source>1.2</source>
+            <target>1.1</target>
         </configuration>
       </plugin>
-	<!-- clean stray cobertura.ser -->
-  <plugin> 
-   <groupId>org.codehaus.mojo</groupId> 
-   <artifactId>cobertura-maven-plugin</artifactId> 
-   <executions> 
-    <execution> 
-     <id>clean</id> 
-     <goals> 
-      <goal>clean</goal> 
-     </goals> 
-    </execution> 
-   </executions> 
-  </plugin> 
+	  <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+                <manifestSections>
+                <manifestSection>
+                    <name>org.apache.log4j</name>
+                    <manifestEntries>
+                        <Implementation-Title>${project.name}</Implementation-Title>
+                        <Implementation-Version>${project.version}</Implementation-Version>
+                        <Implementation-Vendor>Apache Software Foundation</Implementation-Vendor>
+                    </manifestEntries>
+                </manifestSection>
+                </manifestSections>
+          </archive>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>site</phase>
+            <id>untag-site</id>
+            <configuration>
+                <tasks>
+                    <taskdef name="replaceregexp" classname="org.apache.tools.ant.taskdefs.optional.ReplaceRegExp" />                
+                   <replaceregexp file="target/site/source-repository.html" match="/tags/[^ ]*" replace="/trunk" flags="g" />
+                </tasks>
+            </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
+        </executions>
+       <dependencies>
+          <dependency>
+            <groupId>ant</groupId>
+            <artifactId>ant-nodeps</artifactId>
+            <version>1.6.5</version>
+          </dependency>
+        </dependencies>
+      </plugin>	 
+	  <plugin>
+         <artifactId>maven-assembly-plugin</artifactId>
+         <configuration>
+           <descriptors>
+              <descriptor>src/assembly/bin.xml</descriptor>
+           </descriptors>
+        </configuration>
+        <executions>
+            <execution>
+                <goals>
+                    <goal>assembly</goal>
+                </goals>
+            </execution>
+        </executions>
+	 </plugin>
+      <plugin>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <executions>
+            <execution>
+                <goals>
+                    <goal>jar</goal>
+                    <goal>javadoc</goal>
+                </goals>
+            </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-source-plugin</artifactId>
+        <executions>
+            <execution>
+                <goals>
+                    <goal>jar</goal>
+                </goals>
+            </execution>
+        </executions>
+      </plugin>     
     </plugins>
 </build>
   <dependencies>
@@ -135,36 +180,38 @@
     <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
-      <version>1.2.14</version>
+      <version>1.2.8</version>
     </dependency>    
   </dependencies>
   <reporting>
+    <excludeDefaults>true</excludeDefaults>  
     <plugins>
       <plugin>
-        <artifactId>maven-checkstyle-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <artifactId>maven-pmd-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <artifactId>maven-javadoc-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>scm</report>
+              <report>dependencies</report>
+              <report>cim</report>
+              <report>issue-tracking</report>
+              <report>mailing-list</report>
+              <report>license</report>
+            </reports>
+          </reportSet>
+        </reportSets>
       </plugin>
       <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>jxr-maven-plugin</artifactId>
       </plugin>
-	<plugin> 
- 		<groupId>org.codehaus.mojo</groupId> 
- 		<artifactId>cobertura-maven-plugin</artifactId>
-		<!-- version 2.1 was flawed and reports 100% coverage  -->
-		<version>2.0</version>
-	</plugin> 
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-release-plugin</artifactId>
+          <configuration>
+              <goals>site-deploy</goals>
+          </configuration>
+      </plugin>
+      <plugin>
         <artifactId>maven-changes-plugin</artifactId>
       	<reportSets>
           <reportSet>
@@ -177,13 +224,22 @@
         	<issueLinkTemplate>%URL%/show_bug.cgi?id=%ISSUE%</issueLinkTemplate>
         </configuration>
       </plugin>      
+      <plugin>
+        <artifactId>maven-pmd-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <artifactId>maven-javadoc-plugin</artifactId>
+      </plugin>
     </plugins>
   </reporting>
  <distributionManagement>
+    <repository>
+      <id>logging.repo</id>
+      <url>scp://people.apache.org/www/people.apache.org/builds/logging/repo/</url>
+    </repository>
     <site>
-      <id>apache.website</id>
-      <url>scp://people.apache.org/home/carnold/public_html/log4j/companions/component</url>
+      <id>logging.site</id>
+      <url>scp://people.apache.org/www/logging.apache.org/log4j/companions/component</url>
     </site>
   </distributionManagement> 
-  
 </project>
diff --git a/src/assembly/bin.xml b/src/assembly/bin.xml
new file mode 100644
index 0000000..4711dbb
--- /dev/null
+++ b/src/assembly/bin.xml
@@ -0,0 +1,45 @@
+<!--
+ 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
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<assembly>
+	<id>bin</id>
+	<formats>
+		<format>zip</format>
+		<format>tar.gz</format>
+	</formats>
+	<baseDirectory>apache-log4j-component-${project.version}</baseDirectory>
+	<includeSiteDirectory>true</includeSiteDirectory>
+	<fileSets>
+		<fileSet>
+			<includes>
+				<include>LICENSE</include>
+				<include>NOTICE</include>
+				<include>build.xml</include>
+				<include>pom.xml</include>
+				<include>src/**</include>
+			</includes>
+		</fileSet>
+		<fileSet>
+			<directory>target</directory>
+			<outputDirectory>.</outputDirectory>
+			<includes>
+				<include>apache-log4j-component-${project.version}.jar</include>
+			</includes>
+		</fileSet>
+	</fileSets>
+	
+</assembly>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 8830e38..1293164 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
Binary files differ
diff --git a/src/main/java/org/apache/log4j/LoggerRepositoryExImpl.java b/src/main/java/org/apache/log4j/LoggerRepositoryExImpl.java
index 613f220..6a24500 100644
--- a/src/main/java/org/apache/log4j/LoggerRepositoryExImpl.java
+++ b/src/main/java/org/apache/log4j/LoggerRepositoryExImpl.java
@@ -352,17 +352,16 @@
   }
 
   /**
-   * @TODO
-    Requests that a configuration changed event be sent to any registered
-    {@link LoggerRepositoryEventListener}.
-    @since 1.3*/
+   *
+   * Requests that a configuration changed event be sent to any registered
+   * {@link LoggerRepositoryEventListener}.
+   * @since 1.3*/
   public void fireConfigurationChangedEvent() {
   }
 
 
   /**
-     Returns a {@link Level} representation of the <code>enable</code>
-     state.
+     Returns the current threshold.
      @return current threshold level
 
      @since 1.2 */
@@ -479,7 +478,7 @@
      default.  This removes all appenders from all categories, sets
      the level of all non-root categories to <code>null</code>,
      sets their additivity flag to <code>true</code> and sets the level
-     of the root logger to {@link Level#DEBUG DEBUG}.  Moreover,
+     of the root logger to DEBUG.  Moreover,
      message disabling is set its default "off" value.
 
      <p>Existing categories are not removed. They are just reset.
@@ -520,8 +519,8 @@
      Shutting down a hierarchy will <em>safely</em> close and remove
      all appenders in all categories including the root logger.
 
-     <p>Some appenders such as {@link org.apache.log4j.net.SocketAppender}
-     and {@link AsyncAppender} need to be closed before the
+     <p>Some appenders such as org.apache.log4j.net.SocketAppender
+     and AsyncAppender need to be closed before the
      application exists. Otherwise, pending logging events might be
      lost.
 
diff --git a/src/main/java/org/apache/log4j/plugins/PluginConfigurator.java b/src/main/java/org/apache/log4j/plugins/PluginConfigurator.java
index 542bc91..561163f 100644
--- a/src/main/java/org/apache/log4j/plugins/PluginConfigurator.java
+++ b/src/main/java/org/apache/log4j/plugins/PluginConfigurator.java
@@ -22,7 +22,6 @@
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
 import org.apache.log4j.config.PropertySetter;
 import org.apache.log4j.helpers.FileWatchdog;
 import org.apache.log4j.helpers.Loader;
@@ -993,7 +992,7 @@
       }
 
       /**
-         Call {@link PropertyConfigurator#configure(String)} with the
+         Call {@link PluginConfigurator#configure(String)} with the
          <code>filename</code> to reconfigure log4j. */
       public
       void doOnChange() {
diff --git a/src/main/java/org/apache/log4j/spi/ComponentBase.java b/src/main/java/org/apache/log4j/spi/ComponentBase.java
index b3bfbfe..14e2218 100644
--- a/src/main/java/org/apache/log4j/spi/ComponentBase.java
+++ b/src/main/java/org/apache/log4j/spi/ComponentBase.java
@@ -77,7 +77,7 @@
     }
 
     /**
-     * Return the {@link LoggerRepository} this component is attached to.
+     * Return the LoggerRepository to which this component is attached.
      *
      * @return Owning LoggerRepository
      */
diff --git a/src/main/java/org/apache/log4j/spi/LoggerEventListener.java b/src/main/java/org/apache/log4j/spi/LoggerEventListener.java
index 274ea8f..887effd 100644
--- a/src/main/java/org/apache/log4j/spi/LoggerEventListener.java
+++ b/src/main/java/org/apache/log4j/spi/LoggerEventListener.java
@@ -22,11 +22,11 @@
 
 
 /**
-  Interface used to listen for {@link Logger} related events such as
+  Interface used to listen for Logger related events such as
   add/remove appender or changing levels.  Clients register an instance of
   the interface and the instance is called back when the various events occur.
 
-  {@link LoggerRepository} provides methods for adding and removing
+  LoggerRepository provides methods for adding and removing
   LoggerEventListener instances.
 
   When implementing the methods of this interface, it is useful to remember
diff --git a/src/main/java/org/apache/log4j/spi/LoggerRepositoryEventListener.java b/src/main/java/org/apache/log4j/spi/LoggerRepositoryEventListener.java
index 09d4d78..c7a895c 100644
--- a/src/main/java/org/apache/log4j/spi/LoggerRepositoryEventListener.java
+++ b/src/main/java/org/apache/log4j/spi/LoggerRepositoryEventListener.java
@@ -19,13 +19,13 @@
 
 
 /**
-  Interface used to listen for {@link LoggerRepository} related
+  Interface used to listen for LoggerRepository related
   events such as startup, reset, and shutdown.  Clients register
   an instance of the interface and the instance is called back
   when the various events occur.
 
-  {@link LoggerRepository} provides methods for adding and removing
-  LoggerEventListener instances.
+  LoggerRepository provides methods for adding and removing
+  LoggerRepositoryEventListener instances.
 
   @author Ceki G&uuml;lc&uuml;
   @author Mark Womack
diff --git a/src/main/java/org/apache/log4j/spi/LoggerRepositoryEx.java b/src/main/java/org/apache/log4j/spi/LoggerRepositoryEx.java
index 3374a66..ca4f8a0 100644
--- a/src/main/java/org/apache/log4j/spi/LoggerRepositoryEx.java
+++ b/src/main/java/org/apache/log4j/spi/LoggerRepositoryEx.java
@@ -192,7 +192,7 @@
   void putObject(String key, Object value);
 
   /**
-   * Sets the logger factory used by {@link LoggerRepository#getLogger(String)}.
+   * Sets the logger factory used by LoggerRepository.getLogger(String).
    * @param loggerFactory factory to use, may not be null
    * @since 1.3
    */
@@ -200,7 +200,7 @@
 
   /**
    * Returns the logger factory used by
-   * {@link LoggerRepository#getLogger(String)}.
+   * LoggerRepository.getLogger(String).
    *
    * @return non-null factory
    * @since 1.3
diff --git a/src/site/apt/download.apt b/src/site/apt/download.apt
new file mode 100644
index 0000000..f036db0
--- /dev/null
+++ b/src/site/apt/download.apt
@@ -0,0 +1,39 @@
+~~ 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
+~~
+~~ Unless required by applicable law or agreed to in writing, software
+~~ distributed under the License is distributed on an "AS IS" BASIS,
+~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~~ See the License for the specific language governing permissions and
+~~ limitations under the License.
+ ------
+Download apache-log4j-component
+ ------
+ ------
+ ------
+
+Download apache-log4j-component
+
+  Apache Component Companion for log4j 1.2 is distributed under the {{{http://www.apache.org/licenses/LICENSE-2.0.html} Apache License, version 2.0}}.
+
+  The link in the Mirrors column should display a list of available mirrors with a
+  default selection based on your inferred location.  If you do not see that page,
+  try a different browser.  The checksum and signature are links to
+  the originals on the main distribution server.
+  
+*-------------------------+---------+----------+-----------+
+|                         | Mirrors | Checksum | Signature |
+*-------------------------+---------+----------+-----------+
+| apache-log4j-component-1.0-bin (tar.gz)      | {{{http://www.apache.org/dyn/closer.cgi/logging/log4j/companions/component/1.0/apache-log4j-component-1.0-bin.tar.gz} apache-log4j-component-1.0-bin.tar.gz}} | {{{http://www.apache.org/dist/logging/log4j/companions/component/1.0/apache-log4j-component-1.0-bin.tar.gz.md5} apache-log4j-component-1.0-bin.tar.gz.md5}} | {{{http://www.apache.org/dist/logging/log4j/companions/component/1.0/apache-log4j-component-1.0-bin.tar.gz.asc} apache-log4j-component-1.0-bin.tar.gz.asc}} |
+*-------------------------+---------+----------+-----------+
+| apache-log4j-component-1.0-bin (zip)      | {{{http://www.apache.org/dyn/closer.cgi/logging/log4j/companions/component/1.0/apache-log4j-component-1.0-bin.zip} apache-log4j-component-1.0-bin.zip}} | {{{http://www.apache.org/dist/logging/log4j/companions/component/1.0/apache-log4j-component-1.0-bin.zip.md5} apache-log4j-component-1.0-bin.zip.md5}} | {{{http://www.apache.org/dist/logging/log4j/companions/component/1.0/apache-log4j-component-1.0-bin.zip.asc} apache-log4j-component-1.0-bin.zip.asc}} |
+*-------------------------+---------+----------+-----------+
+
+  Please read {{{http://httpd.apache.org/dev/verification.html}Verifying Apache HTTP Server Releases}}
+   for more information on why you should verify our releases.
diff --git a/src/site/apt/index.apt b/src/site/apt/index.apt
new file mode 100644
index 0000000..111d9e8
--- /dev/null
+++ b/src/site/apt/index.apt
@@ -0,0 +1,23 @@
+~~ 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
+~~
+~~ Unless required by applicable law or agreed to in writing, software
+~~ distributed under the License is distributed on an "AS IS" BASIS,
+~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~~ See the License for the specific language governing permissions and
+~~ limitations under the License.
+ ------
+ Apache Component Companion for log4j 1.2
+ ------
+ ------
+ ------
+
+   This companion implements on log4j 1.2 the component framework from the
+   discontinued log4j 1.3 development activity to support backporting
+   log4j 1.3 code that depends on the framework.
diff --git a/src/site/apt/roadmap.apt b/src/site/apt/roadmap.apt
new file mode 100644
index 0000000..0e0eda7
--- /dev/null
+++ b/src/site/apt/roadmap.apt
@@ -0,0 +1,25 @@
+~~ 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
+~~
+~~ Unless required by applicable law or agreed to in writing, software
+~~ distributed under the License is distributed on an "AS IS" BASIS,
+~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~~ See the License for the specific language governing permissions and
+~~ limitations under the License.
+ ------
+ apache-log4j-component Roadmap
+ ------
+ Curt Arnold
+ ------
+ 4 June 2007
+ ------
+
+apache-log4j-component Roadmap
+
+  No additional development is anticipated.
diff --git a/src/site/site.xml b/src/site/site.xml
index d627d75..0b314f2 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -22,15 +22,43 @@
     <href>http://logging.apache.org/</href>
   </bannerLeft>
   <bannerRight>
+    <name>Apache log4j</name>
     <src>images/logo.jpg</src>
+    <href>http://logging.apache.org/log4j</href>
   </bannerRight>
   <body>
-    <links>
-      <item name="Apache" href="http://www.apache.org/" />
+    <breadcrumbs>
+      <item name="Apache" href="http://www.apache.org/"/>
       <item name="Logging Services" href="http://logging.apache.org/"/>
-      <item name="Log4j" href="http://logging.apache.org/log4j/"/>
-      <item name="Log4j Companions" href="http://logging.apache.org/log4j/companions"/>
-    </links>
-    <menu ref="reports"/>
+      <item name="log4j" href="http://logging.apache.org/log4j/"/>
+      <item name="Companions"  href="http://logging.apache.org/log4j/companions/"/>
+      <item name="component"  href="http://logging.apache.org:80/log4j/companions/component/"/>
+    </breadcrumbs>
+  
+	<menu name="Get component">
+	   <item name="Download" href="/download.html"/>
+	   <item name="Changes" href="/changes-report.html"/>
+	   <item name="License" href="/license.html"/>
+	</menu>
+
+	<menu name="About component">
+	   <item name="What is it?" href="/index.html"/>
+	   <item name="Roadmap" href="/roadmap.html"/>
+	   <item name="JavaDoc" href="/apidocs/index.html"/>
+	</menu>
+
+	<menu name="Community">
+		<item name="Mailing Lists" href="/mail-lists.html"/>
+		<item name="Issue Tracking" href="/issue-tracking.html"/>
+	</menu>
+	
+	<menu name="Development">
+		<item name="Repository" href="/source-repository.html"/>
+		<item name="Cross Reference" href="/jxr.html"/>
+		<item name="Dependencies" href="/dependencies.html"/>
+		<item name="Continuous Integration" href="/integration.html"/>
+		<item name="Duplication" href="/cpd.html"/>
+		<item name="PMD" href="/pmd.html"/>
+	</menu>
   </body>
 </project>
diff --git a/src/test/java/org/apache/log4j/plugins/PluginTestCase.java b/src/test/java/org/apache/log4j/plugins/PluginTestCase.java
index c05f2bf..b137106 100644
--- a/src/test/java/org/apache/log4j/plugins/PluginTestCase.java
+++ b/src/test/java/org/apache/log4j/plugins/PluginTestCase.java
@@ -17,34 +17,25 @@
 
 package org.apache.log4j.plugins;
 
-import junit.framework.Test;
 import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
 import org.apache.log4j.FileAppender;
-import org.apache.log4j.Hierarchy;
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
-import org.apache.log4j.SimpleLayout;
 import org.apache.log4j.LoggerRepositoryExImpl;
-import org.apache.log4j.spi.LoggerRepository;
-import org.apache.log4j.spi.LoggerRepositoryEx;
-import org.apache.log4j.spi.RootLogger;
+import org.apache.log4j.SimpleLayout;
 import org.apache.log4j.util.Compare;
 
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
-
 import java.io.File;
 import java.io.IOException;
-
 import java.util.HashMap;
 
 
 public class PluginTestCase extends TestCase {
 
-    static String FILE = "output/plugins.PluginTestCase";
+    static String FILE = "plugins.PluginTestCase";
     static String WITNESS = "witness/plugins.PluginTestCase";
     private static boolean verbosePluginOutput = true;
     private static HashMap repositoryMap = new HashMap();
