<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>src/META-INF/log4j.cdkdepends</filename>
    </added>
    <added>
      <filename>src/META-INF/log4j.datafiles</filename>
    </added>
    <added>
      <filename>src/META-INF/log4j.libdepends</filename>
    </added>
    <added>
      <filename>src/META-INF/test-log4j.cdkdepends</filename>
    </added>
    <added>
      <filename>src/META-INF/test-log4j.devellibdepends</filename>
    </added>
    <added>
      <filename>src/META-INF/test-log4j.libdepends</filename>
    </added>
    <added>
      <filename>src/test/org/openscience/cdk/coverage/Log4jCoverageTest.java</filename>
    </added>
    <added>
      <filename>src/test/org/openscience/cdk/modulesuites/Mlog4jTests.java</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -482,7 +482,7 @@
             list=&quot;core,ioformats&quot;/&gt;
         &lt;foreach target=&quot;compile-module&quot; param=&quot;module&quot;
             parallel=&quot;${parallel}&quot; maxthreads=&quot;${threadCount}&quot;
-            list=&quot;data,dict,diff,qm,standard&quot;/&gt;
+            list=&quot;data,dict,diff,qm,standard,log4j&quot;/&gt;
         &lt;foreach target=&quot;compile-module&quot; param=&quot;module&quot; trim=&quot;yes&quot;
             parallel=&quot;${parallel}&quot; maxthreads=&quot;${threadCount}&quot;
             list=&quot;datadebug,nonotify,isomorphism,atomtype,render,valencycheck,
@@ -525,7 +525,7 @@
                   test-pcore,test-sdg,test-forcefield,test-fingerprint,
                   test-ionpot,test-qm,test-isomorphism,test-libiomd,test-dict,
                   test-diff,test-charges,test-inchi,test-formula,
-                  test-render,test-ioformats&quot;/&gt;
+                  test-render,test-ioformats,test-log4j&quot;/&gt;
         &lt;foreach target=&quot;compile-module&quot; param=&quot;module&quot; trim=&quot;true&quot;
             parallel=&quot;${parallel}&quot; maxthreads=&quot;${threadCount}&quot;
             list=&quot;test-data,test-qsaratomic,test-qsarbond,
@@ -561,6 +561,7 @@
                     &lt;includesfile name=&quot;${metainf}/builder3dtools.libdepends&quot;/&gt;
                     &lt;includesfile name=&quot;${metainf}/charges.libdepends&quot;/&gt;
                     &lt;includesfile name=&quot;${metainf}/core.libdepends&quot;/&gt;
+                    &lt;includesfile name=&quot;${metainf}/log4j.libdepends&quot;/&gt;
                     &lt;includesfile name=&quot;${metainf}/control.libdepends&quot;/&gt;
                     &lt;includesfile name=&quot;${metainf}/datadebug.libdepends&quot;/&gt;
                     &lt;includesfile name=&quot;${metainf}/data.libdepends&quot;/&gt;
@@ -596,6 +597,7 @@
                     &lt;include name=&quot;cdk-builder3dtools.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-charges.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-core.jar&quot;/&gt;
+                    &lt;include name=&quot;cdk-log4j.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-dict.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-diff.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-control.jar&quot;/&gt;
@@ -663,6 +665,7 @@
                     &lt;include name=&quot;cdk-builder3d.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-builder3dtools.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-charges.jar&quot;/&gt;
+                    &lt;include name=&quot;cdk-log4j.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-core.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-control.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-datadebug.jar&quot;/&gt;
@@ -754,6 +757,7 @@
                     &lt;includesfile name=&quot;${metainf}/test-pcore.libdepends&quot;/&gt;
                     &lt;includesfile name=&quot;${metainf}/test-formula.libdepends&quot;/&gt;
                     &lt;includesfile name=&quot;${metainf}/test-render.libdepends&quot;/&gt;
+                    &lt;includesfile name=&quot;${metainf}/test-log4j.libdepends&quot;/&gt;
                 &lt;/fileset&gt;
                 &lt;fileset dir=&quot;${dist}/jar&quot;&gt;
                     &lt;include name=&quot;cdk-test-annotation.jar&quot;/&gt;
@@ -786,6 +790,7 @@
                     &lt;include name=&quot;cdk-test-pcore.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-test-formula.jar&quot;/&gt;
                     &lt;include name=&quot;cdk-test-render.jar&quot;/&gt;
+                    &lt;include name=&quot;cdk-test-log4j.jar&quot;/&gt;
                 &lt;/fileset&gt;
             &lt;/unjar&gt;
 
@@ -995,7 +1000,7 @@
                       smarts,fingerprint,smiles,qsar,qsaratomic,qsarbond,
                       qsarmolecular,qsarionpot,qsarprotein,pdb,pcore,inchi,
                       structgen,libiomd,libiocml,formula,render,extra,sdg,
-                      ioformats&quot;/&gt;
+                      ioformats,log4j&quot;/&gt;
         &lt;/target&gt;
 
         &lt;target id=&quot;limitations&quot; name=&quot;limitations&quot; depends=&quot;noJunit, dist-all&quot;</diff>
      <filename>build.xml</filename>
    </modified>
    <modified>
      <diff>@@ -114,6 +114,7 @@
       &lt;antcall target=&quot;doccheck-module&quot;&gt;&lt;param name=&quot;module&quot; value=&quot;interfaces&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;doccheck-module&quot;&gt;&lt;param name=&quot;module&quot; value=&quot;core&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;doccheck-module&quot;&gt;&lt;param name=&quot;module&quot; value=&quot;data&quot;/&gt;&lt;/antcall&gt;
+      &lt;antcall target=&quot;doccheck-module&quot;&gt;&lt;param name=&quot;module&quot; value=&quot;log4j&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;doccheck-module&quot;&gt;&lt;param name=&quot;module&quot; value=&quot;datadebug&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;doccheck-module&quot;&gt;&lt;param name=&quot;module&quot; value=&quot;nonotify&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;doccheck-module&quot;&gt;&lt;param name=&quot;module&quot; value=&quot;standard&quot;/&gt;&lt;/antcall&gt;</diff>
      <filename>javadoc.xml</filename>
    </modified>
    <modified>
      <diff>@@ -33,6 +33,7 @@
       &lt;!-- the other modules --&gt;
       &lt;antcall target=&quot;test-module&quot;&gt;&lt;param name=&quot;pmd.test&quot; value=&quot;custom&quot;/&gt;&lt;param name=&quot;module&quot; value=&quot;interfaces&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;test-module&quot;&gt;&lt;param name=&quot;pmd.test&quot; value=&quot;custom&quot;/&gt;&lt;param name=&quot;module&quot; value=&quot;core&quot;/&gt;&lt;/antcall&gt;
+      &lt;antcall target=&quot;test-module&quot;&gt;&lt;param name=&quot;pmd.test&quot; value=&quot;custom&quot;/&gt;&lt;param name=&quot;module&quot; value=&quot;log4j&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;test-module&quot;&gt;&lt;param name=&quot;pmd.test&quot; value=&quot;custom&quot;/&gt;&lt;param name=&quot;module&quot; value=&quot;standard&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;test-module&quot;&gt;&lt;param name=&quot;pmd.test&quot; value=&quot;custom&quot;/&gt;&lt;param name=&quot;module&quot; value=&quot;atomtype&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;test-module&quot;&gt;&lt;param name=&quot;pmd.test&quot; value=&quot;custom&quot;/&gt;&lt;param name=&quot;module&quot; value=&quot;io&quot;/&gt;&lt;/antcall&gt;
@@ -86,6 +87,7 @@
       &lt;antcall target=&quot;test-module&quot;&gt;&lt;param name=&quot;pmd.test&quot; value=&quot;custom-test&quot;/&gt;&lt;param name=&quot;module&quot; value=&quot;test-charges&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;test-module&quot;&gt;&lt;param name=&quot;pmd.test&quot; value=&quot;custom-test&quot;/&gt;&lt;param name=&quot;module&quot; value=&quot;test-diff&quot;/&gt;&lt;/antcall&gt;
       &lt;antcall target=&quot;test-module&quot;&gt;&lt;param name=&quot;pmd.test&quot; value=&quot;custom-test&quot;/&gt;&lt;param name=&quot;module&quot; value=&quot;test-qm&quot;/&gt;&lt;/antcall&gt;
+      &lt;antcall target=&quot;test-module&quot;&gt;&lt;param name=&quot;pmd.test&quot; value=&quot;custom-test&quot;/&gt;&lt;param name=&quot;module&quot; value=&quot;test-log4j&quot;/&gt;&lt;/antcall&gt;
     &lt;/target&gt;
 
     &lt;target id=&quot;test-module&quot; name=&quot;test-module&quot;</diff>
      <filename>pmd.xml</filename>
    </modified>
    <modified>
      <diff>@@ -2,5 +2,4 @@ org/openscience/cdk/config/data/*_atomtypes.txt
 org/openscience/cdk/config/data/*_atomtypes.xml
 org/openscience/cdk/config/data/isotopes.xml
 org/openscience/cdk/config/data/chemicalElements.xml
-org/openscience/cdk/config/data/log4j.properties
 org/openscience/cdk/dict/data/cdk-atom-types.owl</diff>
      <filename>src/META-INF/core.datafiles</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,2 @@
 vecmath1.2-1.14.jar
-log4j.jar
 jgrapht-0.6.0.jar</diff>
      <filename>src/META-INF/isomorphism.libdepends</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,3 @@
-log4j.jar
 jgrapht-0.6.0.jar
 vecmath1.2-1.14.jar
 xom-1.1.jar</diff>
      <filename>src/META-INF/reaction.libdepends</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,2 @@
 vecmath1.2-1.14.jar
-log4j.jar
 jgrapht-0.6.0.jar</diff>
      <filename>src/META-INF/standard.libdepends</filename>
    </modified>
    <modified>
      <diff>@@ -12,3 +12,4 @@ cdk-testdata.jar
 cdk-atomtype.jar
 cdk-valencycheck.jar
 cdk-pdb.jar
+cdk-log4j.jar</diff>
      <filename>src/META-INF/test-core.cdkdepends</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,8 @@ package org.openscience.cdk;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.exception.CDKException;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;An PeriodicTableElement class is instantiated with at least the atom symbol:
@@ -66,7 +67,8 @@ public class PeriodicTableElement extends Element
 	 */
 	private static final long serialVersionUID = -2508810950266128526L;
 
-	private static LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(PeriodicTableElement.class);
 	
 	/** The name for this element. */
 	protected String name;
@@ -130,7 +132,6 @@ public class PeriodicTableElement extends Element
     public PeriodicTableElement(String symbol)
 	{
 		this.symbol = symbol;
-		logger = new LoggingTool(this);
 	}
 	/**
 	* Returns the name of this element.</diff>
      <filename>src/main/org/openscience/cdk/PeriodicTableElement.java</filename>
    </modified>
    <modified>
      <diff>@@ -65,7 +65,6 @@ public class CDKAtomTypeMatcher implements IAtomTypeMatcher {
 	
     private static Map&lt;Integer,Map&lt;IChemObjectBuilder,CDKAtomTypeMatcher&gt;&gt; 
     	factories = new Hashtable&lt;Integer,Map&lt;IChemObjectBuilder,CDKAtomTypeMatcher&gt;&gt;(1); 
-    // private static LoggingTool logger = new LoggingTool(CDKAtomTypeMatcher.class);
     
     private CDKAtomTypeMatcher(IChemObjectBuilder builder, int mode) {
     	factory = AtomTypeFactory.getInstance(</diff>
      <filename>src/main/org/openscience/cdk/atomtype/CDKAtomTypeMatcher.java</filename>
    </modified>
    <modified>
      <diff>@@ -37,7 +37,8 @@ import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.tools.AtomTypeTools;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Class implements methods to assign mmff94 atom types for a specific atom in an molecule. 
@@ -49,7 +50,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class MM2AtomTypeMatcher implements IAtomTypeMatcher {
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(MM2AtomTypeMatcher.class);
 
 	IBond.Order maxBondOrder = IBond.Order.SINGLE;
 	private AtomTypeFactory factory = null;
@@ -68,7 +70,6 @@ public class MM2AtomTypeMatcher implements IAtomTypeMatcher {
 	 * Constructor for the MMFF94AtomTypeMatcher object.
 	 */
 	public MM2AtomTypeMatcher() {
-		logger = new LoggingTool(this);
 		atomTypeTools=new AtomTypeTools();
 	}
 </diff>
      <filename>src/main/org/openscience/cdk/atomtype/MM2AtomTypeMatcher.java</filename>
    </modified>
    <modified>
      <diff>@@ -37,7 +37,8 @@ import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.tools.AtomTypeTools;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Class implements methods to assign mmff94 atom types for a specific atom in
@@ -51,7 +52,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class MMFF94AtomTypeMatcher implements IAtomTypeMatcher {
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(MMFF94AtomTypeMatcher.class);
 
 	IBond.Order maxBondOrder = IBond.Order.SINGLE;
 	private AtomTypeFactory factory = null;
@@ -72,7 +74,6 @@ public class MMFF94AtomTypeMatcher implements IAtomTypeMatcher {
 	 * Constructor for the MMFF94AtomTypeMatcher object.
 	 */
 	public MMFF94AtomTypeMatcher() {
-		logger = new LoggingTool(this);
 		atomTypeTools=new AtomTypeTools();
 	}
 </diff>
      <filename>src/main/org/openscience/cdk/atomtype/MMFF94AtomTypeMatcher.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IBond;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
 /**
@@ -48,13 +49,13 @@ import org.openscience.cdk.tools.manipulator.BondManipulator;
 public class StructGenAtomTypeGuesser implements IAtomTypeGuesser {
 
 	private static AtomTypeFactory factory = null;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(StructGenAtomTypeGuesser.class);
     
 	/**
 	 * Constructor for the StructGenMatcher object.
 	 */
 	public StructGenAtomTypeGuesser() {
-		logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/atomtype/StructGenAtomTypeGuesser.java</filename>
    </modified>
    <modified>
      <diff>@@ -26,7 +26,8 @@ import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IBond;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
 /**
@@ -46,13 +47,13 @@ import org.openscience.cdk.tools.manipulator.BondManipulator;
 public class StructGenMatcher implements IAtomTypeMatcher {
 
 	private static AtomTypeFactory factory = null;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(StructGenMatcher.class);
     
 	/**
 	 * Constructor for the StructGenMatcher object.
 	 */
 	public StructGenMatcher() {
-		logger = new LoggingTool(this);
 	}
 
 	@TestMethod(&quot;testFindMatchingAtomType_IAtomContainer&quot;)</diff>
      <filename>src/main/org/openscience/cdk/atomtype/StructGenMatcher.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,6 +23,11 @@
  */
 package org.openscience.cdk.charges;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
@@ -44,15 +49,11 @@ import org.openscience.cdk.reaction.type.HyperconjugationReaction;
 import org.openscience.cdk.reaction.type.SharingAnionReaction;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.StructureResonanceGenerator;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * &lt;p&gt;The calculation of the Gasteiger (PEPE) partial charges is based on 
  * {@cdk.cite Saller85}. This class doesn't implement the original method of the Marsili but the 
@@ -90,7 +91,8 @@ public class GasteigerPEPEPartialCharges implements IChargeCalculator {
 	private double fS = 0.37;
 	
 	
-	private LoggingTool logger = new LoggingTool(GasteigerPEPEPartialCharges.class);
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(GasteigerPEPEPartialCharges.class);
 	
 	/**
 	 *  Constructor for the GasteigerPEPEPartialCharges object</diff>
      <filename>src/main/org/openscience/cdk/charges/GasteigerPEPEPartialCharges.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,18 +24,24 @@
  */
 package org.openscience.cdk.charges;
 
+import java.io.IOException;
+
+import javax.vecmath.Point3d;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.AtomTypeFactory;
 import org.openscience.cdk.config.IsotopeFactory;
 import org.openscience.cdk.exception.CDKException;
-import org.openscience.cdk.interfaces.*;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IAtomType;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IElement;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import javax.vecmath.Point3d;
-import java.io.IOException;
-
 /**
  * The calculation of the inductive partial atomic charges and equalization of
  * effective electronegativities is based on {@cdk.cite CHE03}.
@@ -54,7 +60,8 @@ public class InductivePartialCharges implements IChargeCalculator {
 	private static double[] pauling;
 	private IsotopeFactory ifac = null;
 	private AtomTypeFactory factory = null;
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(InductivePartialCharges.class);
 
 
 	/**
@@ -73,7 +80,6 @@ public class InductivePartialCharges implements IChargeCalculator {
 					1.9, 2.2, 2.2, 2.2, 1.9, 1.7, 1.7, 1.8, 1.9, 2.1, 2.5, 0.7, 0.9, 1.1, 1.3, 1.5,
 					1.7, 1.9, 2.2, 2.2, 2.2, 2.4, 1.9, 1.8, 1.8, 1.9, 2.0, 2.2, 0, 0.7, 0.9, 1.1};
 		}
-		logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/charges/InductivePartialCharges.java</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,8 @@ import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.tools.CDKHydrogenAdder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 
@@ -54,13 +55,13 @@ import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
  */
 @TestClass(&quot;org.openscience.cdk.charges.PolarizabilityTest&quot;)
 public class Polarizability {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(Polarizability.class);
 
     /**
      * Constructor for the Polarizability object
      */
     public Polarizability() {
-        logger = new LoggingTool(this);
     }
 
     private void addExplicitHydrogens(IAtomContainer container) {</diff>
      <filename>src/main/org/openscience/cdk/charges/Polarizability.java</filename>
    </modified>
    <modified>
      <diff>@@ -36,7 +36,8 @@ import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IPseudoAtom;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  *  General class for defining AtomTypes. This class itself does not define the
@@ -94,7 +95,8 @@ public class AtomTypeFactory {
     private final static String XML_EXTENSION = &quot;xml&quot;;
     private final static String OWL_EXTENSION = &quot;owl&quot;;
     
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(AtomTypeFactory.class);
     private static Map&lt;String, AtomTypeFactory&gt; tables = null;
     private List&lt;IAtomType&gt; atomTypes = null;
 
@@ -104,9 +106,6 @@ public class AtomTypeFactory {
 	 *
 	 */
     private AtomTypeFactory(String configFile, IChemObjectBuilder builder) {
-        if (logger == null) {
-            logger = new LoggingTool(this);
-        }
         atomTypes = new ArrayList&lt;IAtomType&gt;(100);
         readConfiguration(configFile, builder);
     }
@@ -116,9 +115,6 @@ public class AtomTypeFactory {
 	 *
 	 */
     private AtomTypeFactory(InputStream ins, String format, IChemObjectBuilder builder) {
-        if (logger == null) {
-            logger = new LoggingTool(this);
-        }
         atomTypes = new ArrayList&lt;IAtomType&gt;(100);
         readConfiguration(ins, format, builder);
     }</diff>
      <filename>src/main/org/openscience/cdk/config/AtomTypeFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,17 +23,18 @@
  */
 package org.openscience.cdk.config;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.atomtypes.AtomTypeReader;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.List;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * AtomType resource that reads the atom type configuration from an XML file.
@@ -49,10 +50,10 @@ public class CDKBasedAtomTypeConfigurator implements IAtomTypeConfigurator {
     private String configFile = &quot;org.openscience.cdk.config.data.structgen_atomtypes.xml&quot;;
     private InputStream ins = null;
     
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CDKBasedAtomTypeConfigurator.class);
     
     public CDKBasedAtomTypeConfigurator() {
-        logger = new LoggingTool(this);
     }
 
     @TestMethod(&quot;testSetInputStream_InputStream&quot;)</diff>
      <filename>src/main/org/openscience/cdk/config/CDKBasedAtomTypeConfigurator.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,18 +23,19 @@
  */
 package org.openscience.cdk.config;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+
 import org.openscience.cdk.PeriodicTableElement;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.elements.ElementPTReader;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IElement;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.List;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Used to store and return data of a particular chemicalElement. As this class is a
@@ -55,7 +56,8 @@ public class ElementPTFactory
 	private static ElementPTFactory efac = null;
 	private List&lt;PeriodicTableElement&gt; elements = null;
 	private boolean debug = false;
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(ElementPTFactory.class);
 
 	/**
 	 * Private constructor for the ElementPTFactory object.
@@ -64,7 +66,6 @@ public class ElementPTFactory
 	 */
 	private ElementPTFactory() throws IOException
 	{
-		logger = new LoggingTool(this);
 		logger.info(&quot;Creating new ElementPTFactory&quot;);
 
 		InputStream ins = null;</diff>
      <filename>src/main/org/openscience/cdk/config/ElementPTFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,18 +23,23 @@
  */
 package org.openscience.cdk.config;
 
-import org.openscience.cdk.annotations.TestClass;
-import org.openscience.cdk.annotations.TestMethod;
-import org.openscience.cdk.config.isotopes.IsotopeReader;
-import org.openscience.cdk.interfaces.*;
-import org.openscience.cdk.tools.LoggingTool;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
+import org.openscience.cdk.annotations.TestClass;
+import org.openscience.cdk.annotations.TestMethod;
+import org.openscience.cdk.config.isotopes.IsotopeReader;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IChemObjectBuilder;
+import org.openscience.cdk.interfaces.IElement;
+import org.openscience.cdk.interfaces.IIsotope;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
+
 /**
  * Used to store and return data of a particular isotope. As this class is a
  * singleton class, one gets an instance with: 
@@ -70,7 +75,8 @@ public class IsotopeFactory
 	private List&lt;IIsotope&gt; isotopes = null;
     private HashMap&lt;String, IIsotope&gt; majorIsotopes = null;
     private boolean debug = false;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IsotopeFactory.class);
 
     /**
      * Private constructor for the IsotopeFactory object.
@@ -80,7 +86,6 @@ public class IsotopeFactory
      * @param builder The builder from which we the factory will be generated
      */
 	private IsotopeFactory(IChemObjectBuilder builder) throws IOException {
-        logger = new LoggingTool(this);
         logger.info(&quot;Creating new IsotopeFactory&quot;);
 
         InputStream ins;</diff>
      <filename>src/main/org/openscience/cdk/config/IsotopeFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,17 +20,18 @@
  */
 package org.openscience.cdk.config;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.atomtypes.OWLAtomTypeReader;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.List;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * AtomType resource that reads the atom type configuration from an OWL file.
@@ -42,10 +43,10 @@ import java.util.List;
 public class OWLBasedAtomTypeConfigurator implements IAtomTypeConfigurator {
 
     private InputStream ins = null;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(OWLBasedAtomTypeConfigurator.class);
     
     public OWLBasedAtomTypeConfigurator() {
-        logger = new LoggingTool(this);
     }
 
     @TestMethod(&quot;testSetInputStream_InputStream&quot;)</diff>
      <filename>src/main/org/openscience/cdk/config/OWLBasedAtomTypeConfigurator.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,20 +23,21 @@
  */
 package org.openscience.cdk.config.atomtypes;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.interfaces.IAtomType;
-import org.openscience.cdk.interfaces.IAtomType.Hybridization;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.interfaces.IAtomType.Hybridization;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.Attributes;
 import org.xml.sax.helpers.DefaultHandler;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * SAX Handler for the AtomTypeReader.
  *
@@ -64,7 +65,8 @@ public class AtomTypeHandler extends DefaultHandler {
     private final int SCALAR_PIBONDCOUNT=13;
     private final int SCALAR_LONEPAIRCOUNT=14;
     
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(AtomTypeHandler.class);
     private String currentChars;
     private List&lt;IAtomType&gt; atomTypes;
     private int scalarType;
@@ -79,7 +81,6 @@ public class AtomTypeHandler extends DefaultHandler {
      * @param build The IChemObjectBuilder used to create the IAtomType's.
      */
     public AtomTypeHandler(IChemObjectBuilder build) {
-        logger = new LoggingTool(this);
         builder = build;
     }
 </diff>
      <filename>src/main/org/openscience/cdk/config/atomtypes/AtomTypeHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,20 +27,21 @@
  */
 package org.openscience.cdk.config.atomtypes;
 
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 
-import java.io.IOException;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * XML Reader for the CDKBasedAtomTypeConfigurator.
  *
@@ -54,7 +55,8 @@ public class AtomTypeReader {
 
     private XMLReader parser;
     private Reader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(AtomTypeReader.class);
 
     /**
      * Instantiates the XML based AtomTypeReader.
@@ -67,7 +69,6 @@ public class AtomTypeReader {
     }
 
     private void init() {
-        logger = new LoggingTool(this);
         boolean success = false;
         // If JAXP is prefered (comes with Sun JVM 1.4.0 and higher)
         if (!success) {</diff>
      <filename>src/main/org/openscience/cdk/config/atomtypes/AtomTypeReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.Attributes;
 import org.xml.sax.helpers.DefaultHandler;
 
@@ -43,7 +44,8 @@ public class OWLAtomTypeHandler extends DefaultHandler {
 
 	private final String NS_ATOMTYPE = &quot;http://cdk.sf.net/ontologies/atomtypes#&quot;;
 	
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(OWLAtomTypeHandler.class);
     private String currentChars;
     private List&lt;IAtomType&gt; atomTypes;
     private IAtomType currentAtomType;
@@ -57,7 +59,6 @@ public class OWLAtomTypeHandler extends DefaultHandler {
      * @param build The IChemObjectBuilder used to create the IAtomType's.
      */
     public OWLAtomTypeHandler(IChemObjectBuilder build) {
-        logger = new LoggingTool(this);
         builder = build;
     }
 </diff>
      <filename>src/main/org/openscience/cdk/config/atomtypes/OWLAtomTypeHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,19 +24,20 @@
  */
 package org.openscience.cdk.config.atomtypes;
 
+import java.io.IOException;
+import java.io.Reader;
+import java.util.HashMap;
+import java.util.Map;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.OWLBasedAtomTypeConfigurator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 
-import java.io.IOException;
-import java.io.Reader;
-import java.util.HashMap;
-import java.util.Map;
-
 /**
  * XML Reader for the {@link OWLBasedAtomTypeConfigurator}.
  *
@@ -48,7 +49,8 @@ public class OWLAtomTypeMappingReader {
 
     private XMLReader parser;
     private Reader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(OWLAtomTypeReader.class);
 
     /**
      * Instantiates the XML based AtomTypeReader.
@@ -62,7 +64,6 @@ public class OWLAtomTypeMappingReader {
     }
 
     private void init() {
-        logger = new LoggingTool(this);
         boolean success = false;
         // If JAXP is preferred (comes with Sun JVM 1.4.0 and higher)
         if (!success) {</diff>
      <filename>src/main/org/openscience/cdk/config/atomtypes/OWLAtomTypeMappingReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -34,7 +34,8 @@ import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.OWLBasedAtomTypeConfigurator;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
@@ -50,7 +51,8 @@ public class OWLAtomTypeReader {
 
     private XMLReader parser;
     private Reader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(OWLAtomTypeReader.class);
 
     /**
      * Instantiates the XML based AtomTypeReader.
@@ -63,7 +65,6 @@ public class OWLAtomTypeReader {
     }
 
     private void init() {
-        logger = new LoggingTool(this);
         boolean success = false;
         // If JAXP is preferred (comes with Sun JVM 1.4.0 and higher)
         if (!success) {</diff>
      <filename>src/main/org/openscience/cdk/config/atomtypes/OWLAtomTypeReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,15 +23,16 @@
  */
 package org.openscience.cdk.config.elements;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.openscience.cdk.PeriodicTableElement;
 import org.openscience.cdk.exception.CDKException;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.Attributes;
 import org.xml.sax.helpers.DefaultHandler;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * Reads an element list in CML2 format. An example definition is:
  * &lt;pre&gt;
@@ -65,7 +66,8 @@ public class ElementPTHandler extends DefaultHandler
 	private final int SCALAR_RADVDW = 9;
 	private final int SCALAR_PAULE = 10;
 	private int scalarType;
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(ElementPTHandler.class);
 	private String currentChars;
 	private List&lt;PeriodicTableElement&gt; elements;
 	
@@ -75,7 +77,6 @@ public class ElementPTHandler extends DefaultHandler
 	
 	public ElementPTHandler() 
 	{
-		logger = new LoggingTool(this);
 	}
 
 	/** </diff>
      <filename>src/main/org/openscience/cdk/config/elements/ElementPTHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.openscience.cdk.PeriodicTableElement;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
@@ -55,7 +56,8 @@ public class ElementPTReader {
     private XMLReader parser;
     private Reader input;
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ElementPTReader.class);
 
     /**
      * Instantiates a new reader that parses the XML from the given &lt;code&gt;input&lt;/code&gt;.
@@ -68,7 +70,6 @@ public class ElementPTReader {
     }
 
     private void init() {
-        logger = new LoggingTool(this);
         boolean success = false;
         // If JAXP is prefered (comes with Sun JVM 1.4.0 and higher)
         if (!success) {</diff>
      <filename>src/main/org/openscience/cdk/config/elements/ElementPTReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,17 +23,18 @@
  */
 package org.openscience.cdk.config.isotopes;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IIsotope;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.Attributes;
 import org.xml.sax.helpers.DefaultHandler;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * Reads an isotope list in CML2 format. An example definition is:
  * &lt;pre&gt;
@@ -57,7 +58,8 @@ import java.util.List;
 @TestClass(&quot;org.openscience.cdk.config.isotopes.IsotopeHandlerTest&quot;)
 public class IsotopeHandler extends DefaultHandler {
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IsotopeHandler.class);
     private String currentChars;
     private List&lt;IIsotope&gt; isotopes;
 
@@ -73,7 +75,6 @@ public class IsotopeHandler extends DefaultHandler {
      * @param builder The IChemObjectBuilder used to create new IIsotope's.
      */
     public IsotopeHandler(IChemObjectBuilder builder) {
-        logger = new LoggingTool(this);
         this.builder = builder;
     }
 </diff>
      <filename>src/main/org/openscience/cdk/config/isotopes/IsotopeHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,20 +27,21 @@
  */
 package org.openscience.cdk.config.isotopes;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IIsotope;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * Reader that instantiates an XML parser and customized handler to process
  * the isotope information in the CML2 isotope data file. The Reader first
@@ -59,7 +60,8 @@ public class IsotopeReader {
     private XMLReader parser;
     private InputStream input;
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IsotopeReader.class);
     private IChemObjectBuilder builder;
 
     /**
@@ -75,7 +77,6 @@ public class IsotopeReader {
     }
 
     private void init() {
-        logger = new LoggingTool(this);
         boolean success = false;
         // If JAXP is prefered (comes with Sun JVM 1.4.0 and higher)
         if (!success) {</diff>
      <filename>src/main/org/openscience/cdk/config/isotopes/IsotopeReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,18 +20,24 @@
  */
 package org.openscience.cdk.debug;
 
-import org.openscience.cdk.formula.AdductFormula;
-import org.openscience.cdk.interfaces.*;
-import org.openscience.cdk.tools.LoggingTool;
-
 import java.util.Iterator;
 
+import org.openscience.cdk.formula.AdductFormula;
+import org.openscience.cdk.interfaces.IAdductFormula;
+import org.openscience.cdk.interfaces.IChemObjectBuilder;
+import org.openscience.cdk.interfaces.IIsotope;
+import org.openscience.cdk.interfaces.IMolecularFormula;
+import org.openscience.cdk.interfaces.IMolecularFormulaSet;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
+
 /**
  * @cdk.module datadebug
  */
 public class DebugAdductFormula extends AdductFormula implements IAdductFormula {
 
-    private LoggingTool logger = new LoggingTool(DebugAdductFormula.class);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAdductFormula.class);
 	
     public DebugAdductFormula() {
     	super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugAdductFormula.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,14 +20,25 @@
  */
 package org.openscience.cdk.debug;
 
-import org.openscience.cdk.AminoAcid;
-import org.openscience.cdk.interfaces.*;
-import org.openscience.cdk.interfaces.IBond.Order;
-import org.openscience.cdk.tools.LoggingTool;
-
 import java.util.List;
 import java.util.Map;
 
+import org.openscience.cdk.AminoAcid;
+import org.openscience.cdk.interfaces.IAminoAcid;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IAtomParity;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IChemObjectBuilder;
+import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
+import org.openscience.cdk.interfaces.IChemObjectListener;
+import org.openscience.cdk.interfaces.IElectronContainer;
+import org.openscience.cdk.interfaces.ILonePair;
+import org.openscience.cdk.interfaces.ISingleElectron;
+import org.openscience.cdk.interfaces.IBond.Order;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
+
 /**
  * Debugging data class.
  * 
@@ -40,7 +51,8 @@ public class DebugAminoAcid extends AminoAcid
 
     private static final long serialVersionUID = 4092864536013855890L;
     
-    LoggingTool logger = new LoggingTool(DebugAtomContainer.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomContainer.class);
 
     public void addAtomParity(IAtomParity parity) {
 		logger.debug(&quot;Adding atom parity: &quot;, parity);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugAminoAcid.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IElement;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -46,7 +47,8 @@ public class DebugAtom extends Atom implements IAtom {
 
     private static final long serialVersionUID = 188945429187084868L;
     
-    LoggingTool logger = new LoggingTool(DebugAtom.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtom.class);
 	
 	public DebugAtom() {
 		super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugAtom.java</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,8 @@ import org.openscience.cdk.interfaces.IElectronContainer;
 import org.openscience.cdk.interfaces.ILonePair;
 import org.openscience.cdk.interfaces.ISingleElectron;
 import org.openscience.cdk.interfaces.IBond.Order;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -49,7 +50,8 @@ public class DebugAtomContainer extends AtomContainer
 
     private static final long serialVersionUID = 7584711255625778345L;
     
-    LoggingTool logger = new LoggingTool(DebugAtomContainer.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomContainer.class);
 
 	public DebugAtomContainer() {
 		super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugAtomContainer.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.interfaces.IAtomContainerSet;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -42,7 +43,8 @@ public class DebugAtomContainerSet extends AtomContainerSet
 
     private static final long serialVersionUID = -8358480615782437454L;
     
-    LoggingTool logger = new LoggingTool(DebugAtomContainerSet.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomContainerSet.class);
 
 	public void addListener(IChemObjectListener col) {
 		logger.debug(&quot;Adding listener: &quot;, col);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugAtomContainerSet.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,7 +23,8 @@ package org.openscience.cdk.debug;
 import org.openscience.cdk.AtomParity;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomParity;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -41,7 +42,8 @@ public class DebugAtomParity extends AtomParity
 		super(centralAtom, first, second, third, fourth, parity);
 	}
 
-	LoggingTool logger = new LoggingTool(DebugAtomParity.class);
+	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomParity.class);
 
 	public IAtom getAtom() {
 		logger.debug(&quot;Getting atom: &quot;, super.getAtom());</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugAtomParity.java</filename>
    </modified>
    <modified>
      <diff>@@ -29,7 +29,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IElement;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -43,7 +44,8 @@ public class DebugAtomType extends AtomType
 
     private static final long serialVersionUID = 1427549696666679540L;
     
-    LoggingTool logger = new LoggingTool(DebugAtomType.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomType.class);
 
 	public DebugAtomType(String elementSymbol) {
 		super(elementSymbol);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugAtomType.java</filename>
    </modified>
    <modified>
      <diff>@@ -39,7 +39,8 @@ import org.openscience.cdk.interfaces.IMonomer;
 import org.openscience.cdk.interfaces.ISingleElectron;
 import org.openscience.cdk.interfaces.IStrand;
 import org.openscience.cdk.interfaces.IBond.Order;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -53,7 +54,8 @@ public class DebugBioPolymer extends BioPolymer
 
     private static final long serialVersionUID = 5349870327516864575L;
     
-    LoggingTool logger = new LoggingTool(DebugAtomContainer.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomContainer.class);
 
     public void addAtomParity(IAtomParity parity) {
 		logger.debug(&quot;Adding atom parity: &quot;, parity);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugBioPolymer.java</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,8 @@ import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -45,7 +46,8 @@ public class DebugBond extends Bond
 
     private static final long serialVersionUID = -2330398179697796261L;
     
-    LoggingTool logger = new LoggingTool(DebugBond.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugBond.class);
 	
 	public DebugBond() {
 		super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugBond.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IChemSequence;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -42,7 +43,8 @@ public class DebugChemFile extends ChemFile
 
     private static final long serialVersionUID = -5575043161897814279L;
     
-    LoggingTool logger = new LoggingTool(DebugChemFile.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugChemFile.class);
 
 	public DebugChemFile() {
 		super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugChemFile.java</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,8 @@ import org.openscience.cdk.interfaces.ICrystal;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.interfaces.IReactionSet;
 import org.openscience.cdk.interfaces.IRingSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -45,7 +46,8 @@ public class DebugChemModel extends ChemModel
 
     private static final long serialVersionUID = -920209300005079592L;
     
-    LoggingTool logger = new LoggingTool(DebugChemModel.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugChemModel.class);
 
 	public void addListener(IChemObjectListener col) {
 		logger.debug(&quot;Adding listener: &quot;, col);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugChemModel.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,8 @@ import org.openscience.cdk.interfaces.IChemObject;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -41,7 +42,8 @@ public class DebugChemObject extends ChemObject
 
     private static final long serialVersionUID = -8547443535884526365L;
     
-    LoggingTool logger = new LoggingTool(DebugChemObject.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugChemObject.class);
 
 	public DebugChemObject(IChemObject object) {
 		super(object);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugChemObject.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IChemSequence;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -42,7 +43,8 @@ public class DebugChemSequence extends ChemSequence
 
     private static final long serialVersionUID = -628120469241907704L;
     
-    LoggingTool logger = new LoggingTool(DebugChemSequence.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugChemSequence.class);
 
 	public void addListener(IChemObjectListener col) {
 		logger.debug(&quot;Adding listener: &quot;, col);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugChemSequence.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import org.openscience.cdk.interfaces.IElectronContainer;
 import org.openscience.cdk.interfaces.ILonePair;
 import org.openscience.cdk.interfaces.ISingleElectron;
 import org.openscience.cdk.interfaces.IBond.Order;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -52,16 +53,15 @@ public class DebugCrystal extends Crystal
 
     private static final long serialVersionUID = -1749989529794094087L;
     
-    LoggingTool logger;
+    static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugCrystal.class);
 
 	public DebugCrystal() {
 		super();
-		logger = new LoggingTool(DebugCrystal.class);
 	}
     
 	public DebugCrystal(IAtomContainer container) {
 		super(container);
-		logger = new LoggingTool(DebugCrystal.class);
 	}
 
 	public void addAtomParity(IAtomParity parity) {</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugCrystal.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IElectronContainer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -41,7 +42,8 @@ public class DebugElectronContainer extends ElectronContainer
 
     private static final long serialVersionUID = 5309193617982266230L;
     
-    LoggingTool logger = new LoggingTool(DebugElectronContainer.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugElectronContainer.class);
 	
 	public Integer getElectronCount() {
 		logger.debug(&quot;Getting electron count: &quot;, super.getElectronCount());</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugElectronContainer.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IElement;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -41,7 +42,8 @@ public class DebugElement extends Element
 
     private static final long serialVersionUID = -8520499563841667066L;
     
-    LoggingTool logger = new LoggingTool(DebugElement.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugElement.class);
 
 	public DebugElement() {
 		super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugElement.java</filename>
    </modified>
    <modified>
      <diff>@@ -36,7 +36,8 @@ import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Class to represent an IPseudoAtom which embeds an IAtomContainer. Very much
@@ -51,7 +52,8 @@ public class DebugFragmentAtom extends FragmentAtom {
 
 	private static final long serialVersionUID = 0L;
 
-	LoggingTool logger = new LoggingTool(DebugFragmentAtom.class);
+	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugFragmentAtom.class);
 
 	public DebugFragmentAtom() {
 		super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugFragmentAtom.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IElement;
 import org.openscience.cdk.interfaces.IIsotope;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -42,7 +43,8 @@ public class DebugIsotope extends Isotope
 
     private static final long serialVersionUID = -2659188100080921299L;
     
-    LoggingTool logger = new LoggingTool(DebugIsotope.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugIsotope.class);
 
 	public DebugIsotope(String elementSymbol) {
 		super(elementSymbol);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugIsotope.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.ILonePair;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -42,7 +43,8 @@ public class DebugLonePair extends LonePair
 
     private static final long serialVersionUID = 5683399496728893341L;
     
-    LoggingTool logger = new LoggingTool(DebugLonePair.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugLonePair.class);
 
     public DebugLonePair() {
     	super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugLonePair.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IMapping;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -42,11 +43,11 @@ public class DebugMapping extends Mapping
 
     private static final long serialVersionUID = -3785399530153469835L;
     
-    LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugMapping.class);
     
 	public DebugMapping(IChemObject objectOne, IChemObject objectTwo) {
 		super(objectOne, objectTwo);
-		logger = new LoggingTool(DebugMapping.class);
 	}
 
 	public void addListener(IChemObjectListener col) {</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugMapping.java</filename>
    </modified>
    <modified>
      <diff>@@ -26,14 +26,16 @@ import org.openscience.cdk.formula.MolecularFormula;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IIsotope;
 import org.openscience.cdk.interfaces.IMolecularFormula;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module datadebug
  */
 public class DebugMolecularFormula extends MolecularFormula implements IMolecularFormula {
 
-    private LoggingTool logger = new LoggingTool(DebugMolecularFormula.class);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugMolecularFormula.class);
 
 	public IMolecularFormula add(IMolecularFormula formula) {
 	    logger.debug(&quot;Adding formula: &quot;, formula);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugMolecularFormula.java</filename>
    </modified>
    <modified>
      <diff>@@ -26,14 +26,16 @@ import org.openscience.cdk.formula.MolecularFormulaSet;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IMolecularFormula;
 import org.openscience.cdk.interfaces.IMolecularFormulaSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module datadebug
  */
 public class DebugMolecularFormulaSet extends MolecularFormulaSet implements IMolecularFormulaSet {
 
-    private LoggingTool logger = new LoggingTool(DebugMolecularFormulaSet.class);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugMolecularFormulaSet.class);
 
     public DebugMolecularFormulaSet() {
     	super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugMolecularFormulaSet.java</filename>
    </modified>
    <modified>
      <diff>@@ -36,7 +36,8 @@ import org.openscience.cdk.interfaces.ILonePair;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.ISingleElectron;
 import org.openscience.cdk.interfaces.IBond.Order;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -50,7 +51,8 @@ public class DebugMolecule extends Molecule
 
     private static final long serialVersionUID = -7263404200270132412L;
     
-    LoggingTool logger = new LoggingTool(DebugMolecule.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugMolecule.class);
 
 	public DebugMolecule() {
 		super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugMolecule.java</filename>
    </modified>
    <modified>
      <diff>@@ -30,7 +30,8 @@ import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -44,7 +45,8 @@ public class DebugMoleculeSet extends MoleculeSet
 
     private static final long serialVersionUID = -2925577323304207688L;
     
-    LoggingTool logger = new LoggingTool(DebugMoleculeSet.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugMoleculeSet.class);
 
 	public void addListener(IChemObjectListener col) {
 		logger.debug(&quot;Adding listener: &quot;, col);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugMoleculeSet.java</filename>
    </modified>
    <modified>
      <diff>@@ -36,7 +36,8 @@ import org.openscience.cdk.interfaces.ILonePair;
 import org.openscience.cdk.interfaces.IMonomer;
 import org.openscience.cdk.interfaces.ISingleElectron;
 import org.openscience.cdk.interfaces.IBond.Order;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -50,7 +51,8 @@ public class DebugMonomer extends Monomer
 
     private static final long serialVersionUID = -7312839949399572435L;
     
-    LoggingTool logger = new LoggingTool(DebugAtomContainer.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomContainer.class);
 
     public void addAtomParity(IAtomParity parity) {
 		logger.debug(&quot;Adding atom parity: &quot;, parity);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugMonomer.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,7 +25,8 @@ import javax.vecmath.Point3d;
 import org.openscience.cdk.interfaces.IElement;
 import org.openscience.cdk.interfaces.IPDBAtom;
 import org.openscience.cdk.protein.data.PDBAtom;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -39,7 +40,8 @@ public class DebugPDBAtom extends PDBAtom implements IPDBAtom {
 
 	private static final long serialVersionUID = -2432127382224382452L;
 
-	LoggingTool logger = new LoggingTool(DebugPDBAtom.class);
+	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugPDBAtom.class);
 	
 	public DebugPDBAtom(IElement element) {
 		super(element);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugPDBAtom.java</filename>
    </modified>
    <modified>
      <diff>@@ -22,7 +22,8 @@ package org.openscience.cdk.debug;
 
 import org.openscience.cdk.interfaces.IPDBMonomer;
 import org.openscience.cdk.protein.data.PDBMonomer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -35,7 +36,8 @@ public class DebugPDBMonomer extends PDBMonomer  implements IPDBMonomer {
 
 	private static final long serialVersionUID = -5156111560946745699L;
 	
-	LoggingTool logger = new LoggingTool(DebugAtomContainer.class);
+	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomContainer.class);
 
 	public void setICode(String newICode) {
     	logger.debug(&quot;Setting I Code: &quot;, newICode);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugPDBMonomer.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,7 +25,8 @@ import java.util.Collection;
 import org.openscience.cdk.interfaces.IBioPolymer;
 import org.openscience.cdk.interfaces.IPDBStructure;
 import org.openscience.cdk.protein.data.PDBPolymer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -39,7 +40,8 @@ public class DebugPDBPolymer extends PDBPolymer  implements IBioPolymer {
    
 	private static final long serialVersionUID = -8485559594520919850L;
 	
-	LoggingTool logger = new LoggingTool(DebugAtomContainer.class);
+	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomContainer.class);
 	
 	public Collection getStructures() {
     	logger.debug(&quot;Getting Structure: &quot;, super.getStructures());</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugPDBPolymer.java</filename>
    </modified>
    <modified>
      <diff>@@ -21,7 +21,8 @@
 package org.openscience.cdk.debug;
 
 import org.openscience.cdk.protein.data.PDBStructure;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -35,7 +36,8 @@ public class DebugPDBStructure extends PDBStructure {
 	
 	private static final long serialVersionUID = 1934748703085969097L;
 
-	LoggingTool logger = new LoggingTool(DebugAtomContainer.class);
+	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomContainer.class);
 
     public Character getEndChainID() {
     	logger.debug(&quot;Getting End Chain ID: &quot;, super.getEndChainID());</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugPDBStructure.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import org.openscience.cdk.interfaces.IMonomer;
 import org.openscience.cdk.interfaces.IPolymer;
 import org.openscience.cdk.interfaces.ISingleElectron;
 import org.openscience.cdk.interfaces.IBond.Order;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -52,7 +53,8 @@ public class DebugPolymer extends Polymer
 
     private static final long serialVersionUID = -1459933635059023539L;
     
-    LoggingTool logger = new LoggingTool(DebugAtomContainer.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomContainer.class);
 
     public void addAtomParity(IAtomParity parity) {
 		logger.debug(&quot;Adding atom parity: &quot;, parity);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugPolymer.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,8 @@ import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IElement;
 import org.openscience.cdk.interfaces.IPseudoAtom;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -47,7 +48,8 @@ public class DebugPseudoAtom extends PseudoAtom
 
     private static final long serialVersionUID = -5935090219383862070L;
     
-    LoggingTool logger = new LoggingTool(DebugPseudoAtom.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugPseudoAtom.class);
 	
 	public DebugPseudoAtom() {
 		super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugPseudoAtom.java</filename>
    </modified>
    <modified>
      <diff>@@ -29,7 +29,8 @@ import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.interfaces.IReaction;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -43,7 +44,8 @@ public class DebugReaction extends Reaction
 
     private static final long serialVersionUID = -8958358842308217875L;
     
-    LoggingTool logger = new LoggingTool(DebugReaction.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugReaction.class);
 
     public DebugReaction() {
     	super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IReactionScheme;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -40,7 +41,8 @@ public class DebugReactionScheme extends ReactionScheme
 
 	private static final long serialVersionUID = 705803374163613819L;
 	
-	LoggingTool logger = new LoggingTool(DebugReactionScheme.class);
+	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugReactionScheme.class);
 
 	public void addListener(IChemObjectListener col) {
 		logger.debug(&quot;Adding listener: &quot;, col);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugReactionScheme.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.interfaces.IReactionSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -42,7 +43,8 @@ public class DebugReactionSet extends ReactionSet
 
     private static final long serialVersionUID = 1620489912540131959L;
     
-    LoggingTool logger = new LoggingTool(DebugReactionSet.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugReactionSet.class);
 
 	public void addListener(IChemObjectListener col) {
 		logger.debug(&quot;Adding listener: &quot;, col);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugReactionSet.java</filename>
    </modified>
    <modified>
      <diff>@@ -37,7 +37,8 @@ import org.openscience.cdk.interfaces.ILonePair;
 import org.openscience.cdk.interfaces.IRing;
 import org.openscience.cdk.interfaces.ISingleElectron;
 import org.openscience.cdk.interfaces.IBond.Order;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -51,7 +52,8 @@ public class DebugRing extends Ring
 
     private static final long serialVersionUID = -6420813246421544803L;
     
-    LoggingTool logger = new LoggingTool(DebugRing.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugRing.class);
 
 	public DebugRing() {
 		super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugRing.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,7 +25,8 @@ import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IRing;
 import org.openscience.cdk.interfaces.IRingSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -39,7 +40,8 @@ public class DebugRingSet extends RingSet
 
     private static final long serialVersionUID = -4144201128508373352L;
     
-    LoggingTool logger = new LoggingTool(DebugRingSet.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugRingSet.class);
 
 	public DebugRingSet() {
 		super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugRingSet.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObjectChangeEvent;
 import org.openscience.cdk.interfaces.IChemObjectListener;
 import org.openscience.cdk.interfaces.ISingleElectron;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -42,7 +43,8 @@ public class DebugSingleElectron extends SingleElectron
 
     private static final long serialVersionUID = -2895377834940311825L;
     
-    LoggingTool logger = new LoggingTool(DebugSingleElectron.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugSingleElectron.class);
 	
     public DebugSingleElectron() {
     	super();</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugSingleElectron.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import org.openscience.cdk.interfaces.IMonomer;
 import org.openscience.cdk.interfaces.ISingleElectron;
 import org.openscience.cdk.interfaces.IStrand;
 import org.openscience.cdk.interfaces.IBond.Order;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Debugging data class.
@@ -52,7 +53,8 @@ public class DebugStrand extends Strand
 
     private static final long serialVersionUID = 1794588804926192427L;
     
-    LoggingTool logger = new LoggingTool(DebugAtomContainer.class);
+    ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DebugAtomContainer.class);
 
     public void addAtomParity(IAtomParity parity) {
 		logger.debug(&quot;Adding atom parity: &quot;, parity);</diff>
      <filename>src/main/org/openscience/cdk/debug/DebugStrand.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,17 +28,18 @@
  */
 package org.openscience.cdk.dict;
 
-import org.openscience.cdk.tools.LoggingTool;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
 import java.io.IOException;
 import java.io.Reader;
 import java.util.Enumeration;
 import java.util.Hashtable;
 
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
 /**
  * Dictionary with entries.
  *
@@ -61,7 +62,8 @@ public class Dictionary {
     }
     
     public static Dictionary unmarshal(Reader reader) {
-        LoggingTool logger = new LoggingTool(Dictionary.class);
+        ILoggingTool logger =
+            LoggingToolFactory.createLoggingTool(Dictionary.class);
         DictionaryHandler handler = new DictionaryHandler();
         XMLReader parser = null;
         try {</diff>
      <filename>src/main/org/openscience/cdk/dict/Dictionary.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,13 +28,14 @@
  */
 package org.openscience.cdk.dict;
 
-import org.openscience.cdk.tools.LoggingTool;
-
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.util.Enumeration;
 import java.util.Hashtable;
 
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
+
 /**
  * Database of dictionaries listing entries with compounds, fragments
  * and entities.
@@ -50,7 +51,8 @@ public class DictionaryDatabase {
 
     public final static String DICTREFPROPERTYNAME = &quot;org.openscience.cdk.dict&quot;;
     
-    private LoggingTool logger;
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DictionaryDatabase.class);
     
     private String[] dictionaryNames = {
         &quot;chemical&quot;, &quot;elements&quot;, &quot;descriptor-algorithms&quot;,&quot;reaction-processes&quot;
@@ -62,8 +64,6 @@ public class DictionaryDatabase {
     private Hashtable&lt;String, Dictionary&gt; dictionaries;
 
     public DictionaryDatabase() {
-        logger = new LoggingTool(this);
-        
         // read dictionaries distributed with CDK
         dictionaries = new Hashtable&lt;String, Dictionary&gt;();
         for (int i=0; i&lt;dictionaryNames.length; i++) {</diff>
      <filename>src/main/org/openscience/cdk/dict/DictionaryDatabase.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import nu.xom.Element;
 import nu.xom.Elements;
 import nu.xom.ParsingException;
 
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Dictionary with entries build from an OWL file.
@@ -61,7 +62,8 @@ public class OWLFile extends Dictionary {
     }
 
     public static Dictionary unmarshal(Reader reader) {
-        LoggingTool logger = new LoggingTool(OWLFile.class);
+        ILoggingTool logger =
+            LoggingToolFactory.createLoggingTool(OWLFile.class);
         Dictionary dict = new OWLFile();
         try {
             Builder parser = new Builder();
@@ -105,7 +107,8 @@ public class OWLFile extends Dictionary {
     }
 
     public static Entry unmarshal(Element entry, String ownNS) {
-    	LoggingTool logger = new LoggingTool(OWLFile.class);
+    	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(OWLFile.class);
 
         // create a new entry by ID
         Attribute id = entry.getAttribute(&quot;ID&quot;, rdfNS);</diff>
      <filename>src/main/org/openscience/cdk/dict/OWLFile.java</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,8 @@ import nu.xom.Element;
 import nu.xom.Elements;
 import nu.xom.ParsingException;
 
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Dictionary with entries build from an OWL React.
@@ -70,7 +71,8 @@ public class OWLReact extends Dictionary {
      * @return       The Dictionary
      */
     public static Dictionary unmarshal(Reader reader) {
-        LoggingTool logger = new LoggingTool(OWLReact.class);
+        ILoggingTool logger =
+            LoggingToolFactory.createLoggingTool(OWLReact.class);
         Dictionary dict = new OWLReact();
         try {
             Builder parser = new Builder();
@@ -114,7 +116,8 @@ public class OWLReact extends Dictionary {
     }
 
     public static EntryReact unmarshal(Element entry, String ownNS) {
-    	LoggingTool logger = new LoggingTool(OWLReact.class);
+    	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(OWLReact.class);
 
         // create a new entry by ID
         Attribute id = entry.getAttribute(&quot;ID&quot;, rdfNS);</diff>
      <filename>src/main/org/openscience/cdk/dict/OWLReact.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,14 @@
  */
 package org.openscience.cdk.fingerprint;
 
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
@@ -36,11 +44,10 @@ import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IPseudoAtom;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import java.util.*;
-
 /**
  *  Generates a fingerprint for a given AtomContainer. Fingerprints are
  *  one-dimensional bit arrays, where bits are set according to a the 
@@ -99,7 +106,8 @@ public class Fingerprinter implements IFingerprinter {
 
 	static int debugCounter = 0;
 
-	private static LoggingTool logger = new LoggingTool(Fingerprinter.class);
+	private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(Fingerprinter.class);
 
 	private static final Map&lt;String, String&gt; queryReplace 
 	        = new HashMap&lt;String, String&gt;() {</diff>
      <filename>src/main/org/openscience/cdk/fingerprint/Fingerprinter.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,14 +24,15 @@
  */
 package org.openscience.cdk.fingerprint;
 
-import org.openscience.cdk.annotations.TestClass;
-import org.openscience.cdk.annotations.TestMethod;
-import org.openscience.cdk.tools.LoggingTool;
-
 import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.List;
 
+import org.openscience.cdk.annotations.TestClass;
+import org.openscience.cdk.annotations.TestMethod;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
+
 /**
  * Tool with helper methods for IFingerprint.
  *
@@ -44,7 +45,8 @@ import java.util.List;
 @TestClass(&quot;org.openscience.cdk.fingerprint.FingerprinterToolTest&quot;)
 public class FingerprinterTool {
 	
-	private final static LoggingTool logger = new LoggingTool(FingerprinterTool.class);
+	private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(FingerprinterTool.class);
 	
 	/**
 	 *  Checks whether all the positive bits in BitSet bs2 occur in BitSet bs1. If</diff>
      <filename>src/main/org/openscience/cdk/fingerprint/FingerprinterTool.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,15 @@
  */
 package org.openscience.cdk.fingerprint;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Iterator;
+import java.util.List;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
@@ -35,16 +44,8 @@ import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.smiles.smarts.SMARTSQueryTool;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.Iterator;
-import java.util.List;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * This fingerprinter generates 166 bit MACCS keys.
@@ -70,8 +71,8 @@ import java.util.List;
  */
 @TestClass(&quot;org.openscience.cdk.fingerprint.MACCSFingerprinterTest&quot;)
 public class MACCSFingerprinter implements IFingerprinter {
-    private static LoggingTool logger 
-        = new LoggingTool(MACCSFingerprinter.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MACCSFingerprinter.class);
     private MaccsKey[] keys = null;
 
     @TestMethod(&quot;testFingerprint&quot;)</diff>
      <filename>src/main/org/openscience/cdk/fingerprint/MACCSFingerprinter.java</filename>
    </modified>
    <modified>
      <diff>@@ -29,7 +29,8 @@ import org.openscience.cdk.config.IsotopeFactory;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IIsotope;
 import org.openscience.cdk.interfaces.IMolecularFormula;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 
 /**
@@ -50,7 +51,8 @@ public class IsotopePatternGenerator{
 	private IsotopeFactory isoFactory;
 	private IsotopePattern abundance_Mass = null;
 	
-	private LoggingTool logger = new LoggingTool(IsotopePatternGenerator.class);
+	private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IsotopePatternGenerator.class);
 	
 	/** Minimal abundance of the isotopes to be added in the combinatorial search.*/
 	private double minAbundance = .1;</diff>
      <filename>src/main/org/openscience/cdk/formula/IsotopePatternGenerator.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.interfaces.IElement;
 import org.openscience.cdk.interfaces.IIsotope;
 import org.openscience.cdk.interfaces.IMolecularFormula;
 import org.openscience.cdk.interfaces.IMolecularFormulaSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaRangeManipulator;
 
@@ -69,7 +70,8 @@ import org.openscience.cdk.tools.manipulator.MolecularFormulaRangeManipulator;
 @TestClass(&quot;org.openscience.cdk.formula.MassToFormulaToolTest&quot;)
 public class MassToFormulaTool {
 
-	private LoggingTool logger = new LoggingTool(MassToFormulaTool.class);
+	private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MassToFormulaTool.class);
 	
 	private IChemObjectBuilder builder;
 	</diff>
      <filename>src/main/org/openscience/cdk/formula/MassToFormulaTool.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,8 @@ import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.formula.rules.IRule;
 import org.openscience.cdk.interfaces.IMolecularFormula;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt; Validate a molecular formula given in IMolecularformula object. The
@@ -49,7 +50,8 @@ import org.openscience.cdk.tools.LoggingTool;
 @TestClass(&quot;org.openscience.cdk.formula.MolecularFormulaCheckerTest&quot;)
 public class MolecularFormulaChecker {
 
-	private LoggingTool logger = new LoggingTool(MolecularFormulaChecker.class);
+	private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MolecularFormulaChecker.class);
 	
 
 	/** List of IRules to be applied in the validation.*/
@@ -109,8 +111,6 @@ public class MolecularFormulaChecker {
 	 */
 	@TestMethod(&quot;testIsValid_IMolecularFormula&quot;)
 	public IMolecularFormula isValid(IMolecularFormula formula){
-		logger = new LoggingTool(this);
-	
 		logger.info(&quot;Generating the validity of the molecular formula&quot;);
 		
 		if(formula.getIsotopeCount() == 0){</diff>
      <filename>src/main/org/openscience/cdk/formula/MolecularFormulaChecker.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,8 @@ import java.io.IOException;
 
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IMolecularFormula;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 /**
  * This class validate if the charge in the IMolecularFormula correspond with
  * a specific value. As default it is defined as neutral == 0.0.
@@ -53,8 +54,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class ChargeRule implements IRule{
 
-
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(ChargeRule.class);
 	
 	private double charge = 0.0;
 
@@ -65,7 +66,6 @@ public class ChargeRule implements IRule{
      *  @throws ClassNotFoundException If an error occurs during tom typing
      */
     public ChargeRule() {
-        logger = new LoggingTool(this);
     }
 
     /**</diff>
      <filename>src/main/org/openscience/cdk/formula/rules/ChargeRule.java</filename>
    </modified>
    <modified>
      <diff>@@ -32,7 +32,8 @@ import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IElement;
 import org.openscience.cdk.interfaces.IIsotope;
 import org.openscience.cdk.interfaces.IMolecularFormula;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 
 /**
@@ -62,7 +63,8 @@ import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 public class ElementRule implements IRule{
 
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(ElementRule.class);
 
 	private MolecularFormulaRange mfRange;
 
@@ -73,7 +75,6 @@ public class ElementRule implements IRule{
      *  @throws ClassNotFoundException If an error occurs during tom typing
      */
     public ElementRule(){
-        logger = new LoggingTool(this);
     }
 
     /**</diff>
      <filename>src/main/org/openscience/cdk/formula/rules/ElementRule.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,8 @@ import org.openscience.cdk.formula.IsotopePatternGenerator;
 import org.openscience.cdk.formula.IsotopePatternManipulator;
 import org.openscience.cdk.formula.IsotopePatternSimilarity;
 import org.openscience.cdk.interfaces.IMolecularFormula;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 /**
  * This class validate if the Isotope Pattern from a given IMolecularFormula
  *  correspond with other to compare.
@@ -60,7 +61,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class IsotopePatternRule implements IRule{
 
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(IsotopePatternRule.class);
 
 	/** Accuracy on the mass measuring isotope pattern*/
 	private double toleranceMass = 0.001;
@@ -81,8 +83,6 @@ public class IsotopePatternRule implements IRule{
     	isotopeGe = new IsotopePatternGenerator(0.01);
     	is = new IsotopePatternSimilarity();
 		is.seTolerance(toleranceMass);
-		
-    	logger = new LoggingTool(this);
     }
 
     /**</diff>
      <filename>src/main/org/openscience/cdk/formula/rules/IsotopePatternRule.java</filename>
    </modified>
    <modified>
      <diff>@@ -30,7 +30,8 @@ import java.util.Iterator;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IElement;
 import org.openscience.cdk.interfaces.IMolecularFormula;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 /**
  * This class validate if the occurrence of the IElements in the IMolecularFormula, for
@@ -74,7 +75,8 @@ public class MMElementRule implements IRule{
 
 	private HashMap&lt;String, Integer&gt; hashMap;
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(MMElementRule.class);
 
 	/** A enumeration of the possible mass range
 	 * according the rules */
@@ -104,8 +106,6 @@ public class MMElementRule implements IRule{
      *  @throws ClassNotFoundException If an error occurs during tom typing
      */
     public MMElementRule(){
-        logger = new LoggingTool(this);
-        
         // initiate Hashmap default
         this.hashMap = getWisley_500();
     }</diff>
      <filename>src/main/org/openscience/cdk/formula/rules/MMElementRule.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,7 +25,8 @@ package org.openscience.cdk.formula.rules;
 
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IMolecularFormula;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 /**
  * This class validate if the rule of nitrogen is kept.
@@ -55,13 +56,13 @@ import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 public class NitrogenRule implements IRule{
 
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(NitrogenRule.class);
 
     /**
      *  Constructor for the NitrogenRule object.
      */
     public NitrogenRule() {
-        logger = new LoggingTool(this);
     }
 
     /**</diff>
      <filename>src/main/org/openscience/cdk/formula/rules/NitrogenRule.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,16 +23,21 @@
  */
 package org.openscience.cdk.formula.rules;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IIsotope;
 import org.openscience.cdk.interfaces.IMolecularFormula;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 
-import java.util.*;
-
 /**
  * &lt;p&gt;Ring Double Bond Equivalents (RDBE) or 
  * Double Bond Equivalents (DBE) are calculated from valence values of 
@@ -64,7 +69,8 @@ public class RDBERule implements IRule{
 
 	private static Map&lt;String,int[]&gt; oxidationStateTable = null;
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RDBERule.class);
 	private double min = -0.5;
 	private double max = 30;
 
@@ -72,7 +78,6 @@ public class RDBERule implements IRule{
      *  Constructor for the RDBE object.
      */
     public RDBERule() {
-        logger = new LoggingTool(this);
         createTable();
     }
 </diff>
      <filename>src/main/org/openscience/cdk/formula/rules/RDBERule.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,8 @@ import java.io.IOException;
 
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IMolecularFormula;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 /**
  * This class validate if the mass from an IMolecularFormula is
@@ -61,7 +62,8 @@ import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 public class ToleranceRangeRule implements IRule{
 
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(ToleranceRangeRule.class);
 
 	private double mass = 0.0;
 	
@@ -74,7 +76,6 @@ public class ToleranceRangeRule implements IRule{
      *  @throws ClassNotFoundException If an error occurs during tom typing
      */
     public ToleranceRangeRule(){
-        logger = new LoggingTool(this);
     }
 
     /**</diff>
      <filename>src/main/org/openscience/cdk/formula/rules/ToleranceRangeRule.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,19 @@
  */
 package org.openscience.cdk.geometry;
 
+import java.awt.Dimension;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import javax.vecmath.Point2d;
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector2d;
+import javax.vecmath.Vector3d;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtom;
@@ -31,15 +44,8 @@ import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IRing;
 import org.openscience.cdk.interfaces.IRingSet;
-import org.openscience.cdk.tools.LoggingTool;
-
-import javax.vecmath.Point2d;
-import javax.vecmath.Point3d;
-import javax.vecmath.Vector2d;
-import javax.vecmath.Vector3d;
-import java.awt.*;
-import java.util.*;
-import java.util.List;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * A set of static utility classes for geometric calculations and operations.
@@ -58,7 +64,8 @@ import java.util.List;
  */
 public class GeometryTools {
 
-	private static LoggingTool logger = new LoggingTool(GeometryTools.class);
+	private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(GeometryTools.class);
 
 	/**
 	 *  Adds an automatically calculated offset to the coordinates of all atoms</diff>
      <filename>src/main/org/openscience/cdk/geometry/GeometryTools.java</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,8 @@ import javax.vecmath.Point3d;
 
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Calculator of radial distribution functions. The RDF has bins defined around
@@ -64,7 +65,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class RDFCalculator {
 
-    private static LoggingTool logger = new LoggingTool(RDFCalculator.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RDFCalculator.class);
     
     private double startCutoff;
     private double cutoff;</diff>
      <filename>src/main/org/openscience/cdk/geometry/RDFCalculator.java</filename>
    </modified>
    <modified>
      <diff>@@ -29,7 +29,8 @@ import org.openscience.cdk.config.IsotopeFactory;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 import Jama.EigenvalueDecomposition;
 import Jama.Matrix;
@@ -96,7 +97,8 @@ import Jama.Matrix;
 @TestClass(&quot;org.openscience.cdk.geometry.alignment.KabschAlignmentTest&quot;)
 public class KabschAlignment {
 
-	private LoggingTool logger = new LoggingTool(KabschAlignment.class);
+	private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(KabschAlignment.class);
 	
     private double[][] U;
     private double rmsd = -1.0;</diff>
      <filename>src/main/org/openscience/cdk/geometry/alignment/KabschAlignment.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,17 +20,19 @@
 
 package org.openscience.cdk.geometry.surface;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.vecmath.Point3d;
+
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.PeriodicTable;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import javax.vecmath.Point3d;
-import java.util.ArrayList;
-import java.util.Iterator;
-
 /**
  * A class representing the solvent acessible surface area surface of a molecule.
  *
@@ -55,7 +57,8 @@ import java.util.Iterator;
  * @cdk.bug     1846421
  */
 public class NumericalSurface {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(NumericalSurface.class);
     double solvent_radius = 1.4;
     int tesslevel = 4;
     IAtom[] atoms;
@@ -73,7 +76,6 @@ public class NumericalSurface {
      */
     public NumericalSurface(IAtomContainer atomContainer) {
         this.atoms = AtomContainerManipulator.getAtomArray(atomContainer);
-        logger = new LoggingTool(this);
     }
     /**
      * Constructor to initialize the surface calculation with user specified values.
@@ -91,7 +93,6 @@ public class NumericalSurface {
         this.solvent_radius = solvent_radius;
         this.atoms = AtomContainerManipulator.getAtomArray(atomContainer);
         this.tesslevel = tesslevel;
-        logger = new LoggingTool(this);
     }
 
     /**</diff>
      <filename>src/main/org/openscience/cdk/geometry/surface/NumericalSurface.java</filename>
    </modified>
    <modified>
      <diff>@@ -32,7 +32,8 @@ package org.openscience.cdk.graph;
 import java.util.Iterator;
 
 import org.openscience.cdk.AtomContainer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * The permutation code here is based on a pseudo code example 
@@ -52,7 +53,8 @@ public abstract class AtomContainerPermutor implements Iterator
 	int[] bookkeeping;
 	Object[] objects;
 	
-	private static LoggingTool logger = new LoggingTool(AtomContainerPermutor.class);
+	private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(AtomContainerPermutor.class);
 
 	AtomContainer atomContainer;
 	</diff>
      <filename>src/main/org/openscience/cdk/graph/AtomContainerPermutor.java</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,8 @@ import org.openscience.cdk.graph.PathTools;
 import org.openscience.cdk.graph.matrix.ConnectionMatrix;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IBond;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * An algorithm for topological symmetry.
@@ -53,7 +54,8 @@ public class EquivalentClassPartitioner
 	private int layerNumber;
 	private int nodeNumber;
 	private static double LOST=0.000000000001;
-	private org.openscience.cdk.tools.LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(EquivalentClassPartitioner.class);
 
 
 	/**
@@ -77,7 +79,6 @@ public class EquivalentClassPartitioner
 		nodeMatrix=new double[nodeNumber][layerNumber+1];
 		bondMatrix=new double[nodeNumber][layerNumber];
 		weight=new double[nodeNumber+1];
-		logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/graph/invariant/EquivalentClassPartitioner.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,8 @@
  */
 package org.openscience.cdk.graph.invariant;
 
+import java.util.Iterator;
+
 import org.openscience.cdk.AtomContainer;
 import org.openscience.cdk.exception.NoSuchAtomException;
 import org.openscience.cdk.graph.PathTools;
@@ -32,9 +34,8 @@ import org.openscience.cdk.graph.invariant.exception.IndexOutOfBoundsException;
 import org.openscience.cdk.graph.matrix.ConnectionMatrix;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IBond;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.util.Iterator;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Collection of methods for the calculation of topological indices of a 
@@ -44,7 +45,8 @@ import java.util.Iterator;
  */
 public class HuLuIndexTool
 {
-	private final static LoggingTool logger = new LoggingTool(HuLuIndexTool.class);
+	private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(HuLuIndexTool.class);
 	
     /**
    * Calculates the extended adjacency matrix index.</diff>
      <filename>src/main/org/openscience/cdk/graph/invariant/HuLuIndexTool.java</filename>
    </modified>
    <modified>
      <diff>@@ -50,7 +50,8 @@ import org.openscience.cdk.io.setting.BooleanIOSetting;
 import org.openscience.cdk.io.setting.IOSetting;
 import org.openscience.cdk.tools.DataFeatures;
 import org.openscience.cdk.tools.IDCreator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Converts a Molecule into CDK source code that would build the same
@@ -75,7 +76,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class CDKSourceCodeWriter extends DefaultChemObjectWriter {
 
     private BufferedWriter writer;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CDKSourceCodeWriter.class);
     
     private BooleanIOSetting write2DCoordinates;
     private BooleanIOSetting write3DCoordinates;
@@ -86,7 +88,6 @@ public class CDKSourceCodeWriter extends DefaultChemObjectWriter {
      * @param   out  The Writer to write to
      */
     public CDKSourceCodeWriter(Writer out) {
-    	logger = new LoggingTool(this);
     	initIOSettings();
     	try {
     		setWriter(out);</diff>
      <filename>src/main/org/openscience/cdk/io/CDKSourceCodeWriter.java</filename>
    </modified>
    <modified>
      <diff>@@ -39,19 +39,20 @@ import java.util.StringTokenizer;
 import javax.vecmath.Point3d;
 import javax.vecmath.Vector3d;
 
+import org.openscience.cdk.annotations.TestClass;
+import org.openscience.cdk.annotations.TestMethod;
+import org.openscience.cdk.exception.CDKException;
+import org.openscience.cdk.geometry.CrystalGeometryTools;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IChemFile;
 import org.openscience.cdk.interfaces.IChemModel;
 import org.openscience.cdk.interfaces.IChemObject;
 import org.openscience.cdk.interfaces.IChemSequence;
 import org.openscience.cdk.interfaces.ICrystal;
-import org.openscience.cdk.annotations.TestClass;
-import org.openscience.cdk.annotations.TestMethod;
-import org.openscience.cdk.exception.CDKException;
-import org.openscience.cdk.geometry.CrystalGeometryTools;
 import org.openscience.cdk.io.formats.CIFFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * This is not a reader for the CIF and mmCIF crystallographic formats.
@@ -76,7 +77,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class CIFReader extends DefaultChemObjectReader {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CIFReader.class);
 
     private ICrystal crystal = null;
     // cell parameters
@@ -94,7 +96,6 @@ public class CIFReader extends DefaultChemObjectReader {
      */
     public CIFReader(Reader input) {
         this.input = new BufferedReader(input);
-        this.logger = new LoggingTool(this);
     }
     
     public CIFReader(InputStream input) {</diff>
      <filename>src/main/org/openscience/cdk/io/CIFReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.io.cml.CMLResolver;
 import org.openscience.cdk.io.cml.ICMLModule;
 import org.openscience.cdk.io.formats.CMLFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -70,7 +71,8 @@ public class CMLReader extends DefaultChemObjectReader {
     
     private Map&lt;String,ICMLModule&gt; userConventions = new HashMap&lt;String,ICMLModule&gt;();
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CMLReader.class);
 
     /**
      * Reads CML from an java.io.InputStream, for example the FileInputStream.
@@ -121,8 +123,6 @@ public class CMLReader extends DefaultChemObjectReader {
     }
 
     private void init() {
-        logger = new LoggingTool(this);
-
         url = &quot;&quot;; // make sure it is not null
 
         boolean success = false;</diff>
      <filename>src/main/org/openscience/cdk/io/CMLReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -65,7 +65,8 @@ import org.openscience.cdk.io.setting.IOSetting;
 import org.openscience.cdk.io.setting.StringIOSetting;
 import org.openscience.cdk.libio.cml.Convertor;
 import org.openscience.cdk.libio.cml.ICMLCustomizer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Serializes a {@link IMoleculeSet} or a {@link IMolecule} object to CML 2 code.
@@ -122,7 +123,8 @@ public class CMLWriter extends DefaultChemObjectWriter {
     private BooleanIOSetting indent;
     private BooleanIOSetting xmlDeclaration;
     
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CMLWriter.class);
     
     private static List&lt;ICMLCustomizer&gt; customizers = null;
 
@@ -140,14 +142,12 @@ public class CMLWriter extends DefaultChemObjectWriter {
 				writer.write(anInt);
 			}
         };
-        logger = new LoggingTool(this);
         initIOSettings();
     }
 
     public CMLWriter(OutputStream output) {
         this.output = output;
         writer = null;
-        logger = new LoggingTool(this);
         initIOSettings();
     }
     </diff>
      <filename>src/main/org/openscience/cdk/io/CMLWriter.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,19 +23,32 @@
  */
 package org.openscience.cdk.io;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.Symbols;
 import org.openscience.cdk.exception.CDKException;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IChemFile;
+import org.openscience.cdk.interfaces.IChemModel;
+import org.openscience.cdk.interfaces.IChemObject;
+import org.openscience.cdk.interfaces.IChemSequence;
+import org.openscience.cdk.interfaces.IMolecule;
+import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.formats.CTXFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
-import java.io.*;
-
 /**
  * Reader that extracts information from the IDENT, NAME, ATOMS and BONDS
  * blocks in CTX files.
@@ -47,12 +60,12 @@ import java.io.*;
 public class CTXReader extends DefaultChemObjectReader {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CTXReader.class);
     
     private IChemFile file;
 
     public CTXReader() {
-        logger = new LoggingTool(this);
         file = null;
     }
 </diff>
      <filename>src/main/org/openscience/cdk/io/CTXReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,19 +20,30 @@
  */
 package org.openscience.cdk.io;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3d;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.geometry.CrystalGeometryTools;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IChemFile;
+import org.openscience.cdk.interfaces.IChemModel;
+import org.openscience.cdk.interfaces.IChemObject;
+import org.openscience.cdk.interfaces.IChemSequence;
+import org.openscience.cdk.interfaces.ICrystal;
 import org.openscience.cdk.io.formats.CrystClustFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.math.FortranFormat;
-import org.openscience.cdk.tools.LoggingTool;
-
-import javax.vecmath.Point3d;
-import javax.vecmath.Vector3d;
-import java.io.*;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module extra
@@ -42,10 +53,10 @@ import java.io.*;
 public class CrystClustReader extends DefaultChemObjectReader {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CrystClustReader.class);
 
     public CrystClustReader() {
-        logger = new LoggingTool(this);
     }
 
     public CrystClustReader(Reader input) {</diff>
      <filename>src/main/org/openscience/cdk/io/CrystClustReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,15 @@
  */
 package org.openscience.cdk.io;
 
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import javax.vecmath.Vector3d;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.exception.CDKException;
@@ -30,11 +39,8 @@ import org.openscience.cdk.interfaces.IChemSequence;
 import org.openscience.cdk.interfaces.ICrystal;
 import org.openscience.cdk.io.formats.CrystClustFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
-import org.openscience.cdk.tools.LoggingTool;
-
-import javax.vecmath.Vector3d;
-import java.io.*;
-//import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Rather stupid file format used for storing crystal information.
@@ -49,7 +55,8 @@ import java.io.*;
 public class CrystClustWriter extends DefaultChemObjectWriter {
 
     private BufferedWriter writer;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CrystClustWriter.class);
 
     /**
      * Constructs a new CrystClustWriter class. Output will be stored in the Writer
@@ -58,7 +65,6 @@ public class CrystClustWriter extends DefaultChemObjectWriter {
      * @param out Writer to redirect the output to.
      */
     public CrystClustWriter(Writer out) {
-    	logger = new LoggingTool(this);
     	try {
     		if (out instanceof BufferedWriter) {
                 writer = (BufferedWriter)out;</diff>
      <filename>src/main/org/openscience/cdk/io/CrystClustWriter.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.formats.Gaussian03Format;
 import org.openscience.cdk.io.formats.IResourceFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * A reader for Gaussian03 output.
@@ -73,11 +74,11 @@ import org.openscience.cdk.tools.LoggingTool;
 public class Gaussian03Reader extends DefaultChemObjectReader {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(Gaussian03Reader.class);;
 
     public Gaussian03Reader(Reader reader) {
         input = new BufferedReader(reader);
-        logger = new LoggingTool(this);
     }
 
     public Gaussian03Reader(InputStream input) {</diff>
      <filename>src/main/org/openscience/cdk/io/Gaussian03Reader.java</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,8 @@ import org.openscience.cdk.io.formats.Gaussian98Format;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.setting.BooleanIOSetting;
 import org.openscience.cdk.io.setting.IOSetting;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemModelManipulator;
 
 /**
@@ -78,7 +79,8 @@ import org.openscience.cdk.tools.manipulator.ChemModelManipulator;
 public class Gaussian98Reader extends DefaultChemObjectReader {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(Gaussian98Reader.class);;
     private int atomCount = 0;
     private String lastRoute = &quot;&quot;;
 
@@ -131,7 +133,6 @@ public class Gaussian98Reader extends DefaultChemObjectReader {
      * @param input source of Gaussian98 data
      */
     public Gaussian98Reader(Reader input) {
-        logger = new LoggingTool(this);
         if (input instanceof BufferedReader) {
             this.input = (BufferedReader) input;
         } else {</diff>
      <filename>src/main/org/openscience/cdk/io/Gaussian98Reader.java</filename>
    </modified>
    <modified>
      <diff>@@ -47,7 +47,8 @@ import org.openscience.cdk.interfaces.IChemSequence;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.formats.GhemicalMMFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Reads Ghemical (&lt;a href=&quot;http://www.uku.fi/~thassine/ghemical/&quot;&gt;
@@ -62,11 +63,11 @@ import org.openscience.cdk.tools.LoggingTool;
 @TestClass(&quot;org.openscience.cdk.io.GhemicalMMReaderTest&quot;)
 public class GhemicalMMReader extends DefaultChemObjectReader {
 
-    private LoggingTool logger = null;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(GhemicalMMReader.class);
     private BufferedReader input = null;
 
     public GhemicalMMReader(Reader input) {
-        this.logger = new LoggingTool(this);
         this.input = new BufferedReader(input);
     }
 </diff>
      <filename>src/main/org/openscience/cdk/io/GhemicalMMReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,7 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.formats.HINFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Writer that outputs in the HIN format.
@@ -65,7 +65,6 @@ public class HINWriter extends DefaultChemObjectWriter {
      * @param out the stream to write the HIN file to.
      */
     public HINWriter(Writer out) {
-        LoggingTool logger = new LoggingTool(this);
         try {
             if (out instanceof BufferedWriter) {
                 writer = (BufferedWriter) out;
@@ -73,7 +72,8 @@ public class HINWriter extends DefaultChemObjectWriter {
                 writer = new BufferedWriter(out);
             }
         } catch (Exception exc) {
-            logger.debug(exc.toString());
+            LoggingToolFactory.createLoggingTool(HINWriter.class)
+                .debug(exc.toString());
         }
     }
 </diff>
      <filename>src/main/org/openscience/cdk/io/HINWriter.java</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,8 @@ import org.openscience.cdk.interfaces.IChemObject;
 import org.openscience.cdk.io.formats.INChIFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.inchi.INChIHandler;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
@@ -72,7 +73,8 @@ public class INChIReader extends DefaultChemObjectReader {
     private XMLReader parser;
     private InputStream input;
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(INChIReader.class);
 
     /**
      * Construct a INChI reader from a InputStream object.
@@ -111,7 +113,6 @@ public class INChIReader extends DefaultChemObjectReader {
      * Initializes this reader.
      */
     private void init() {
-        logger = new LoggingTool(this);
         boolean success = false;
         // If JAXP is prefered (comes with Sun JVM 1.4.0 and higher)
         if (!success) {</diff>
      <filename>src/main/org/openscience/cdk/io/INChIReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,8 @@ import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.interfaces.IReactionSet;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.MDLRXNFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Reads a molecule from an MDL RXN file {@cdk.cite DAL92}.
@@ -68,7 +69,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class MDLRXNReader extends DefaultChemObjectReader {
 
     BufferedReader input = null;
-    private LoggingTool logger = null;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLReader.class);
 
     /**
      * Contructs a new MDLReader that can read Molecule from a given Reader.
@@ -79,7 +81,6 @@ public class MDLRXNReader extends DefaultChemObjectReader {
     	this(in, Mode.RELAXED);
     }
     public MDLRXNReader(Reader in, Mode mode) {
-        logger = new LoggingTool(this);
         if (in instanceof BufferedReader) {
         	input = (BufferedReader)in;
         } else {</diff>
      <filename>src/main/org/openscience/cdk/io/MDLRXNReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -50,7 +50,8 @@ import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.interfaces.IReactionSet;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.MDLRXNFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Reads a molecule from an MDL RXN file {@cdk.cite DAL92}.
@@ -69,7 +70,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class MDLRXNV2000Reader extends DefaultChemObjectReader {
 
     BufferedReader input = null;
-    private LoggingTool logger = null;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLRXNV2000Reader.class);
 
     /**
      * Contructs a new MDLReader that can read Molecule from a given Reader.
@@ -80,7 +82,6 @@ public class MDLRXNV2000Reader extends DefaultChemObjectReader {
     	this(in, Mode.RELAXED);
     }
     public MDLRXNV2000Reader(Reader in, Mode mode) {
-        logger = new LoggingTool(this);
         if (in instanceof BufferedReader) {
         	input = (BufferedReader)in;
         } else {</diff>
      <filename>src/main/org/openscience/cdk/io/MDLRXNV2000Reader.java</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,8 @@ import org.openscience.cdk.interfaces.IReactionSet;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.MDLRXNV3000Format;
 import org.openscience.cdk.io.setting.IOSetting;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Class that implements the new MDL mol format introduced in August 2002.
@@ -61,13 +62,13 @@ import org.openscience.cdk.tools.LoggingTool;
 public class MDLRXNV3000Reader extends DefaultChemObjectReader {
 
     BufferedReader input = null;
-    private LoggingTool logger = null;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLRXNV3000Reader.class);
 
     public MDLRXNV3000Reader(Reader in) {
     	this(in, Mode.RELAXED);
     }
     public MDLRXNV3000Reader(Reader in, Mode mode) {
-        logger = new LoggingTool(this);
         if (in instanceof BufferedReader) {
         	input = (BufferedReader)in;
         } else {</diff>
      <filename>src/main/org/openscience/cdk/io/MDLRXNV3000Reader.java</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,8 @@ import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.interfaces.IReactionSet;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.MDLFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 
 
@@ -76,7 +77,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class MDLRXNWriter extends DefaultChemObjectWriter {
 
     private BufferedWriter writer;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLRXNWriter.class);
     private int reactionNumber;
     public Map rdFields=null;
 
@@ -88,7 +90,6 @@ public class MDLRXNWriter extends DefaultChemObjectWriter {
      * @param   out  The Writer to write to
      */
     public MDLRXNWriter(Writer out){
-    	logger = new LoggingTool(this);
     	try {
     		if (out instanceof BufferedWriter) {
                 writer = (BufferedWriter)out;</diff>
      <filename>src/main/org/openscience/cdk/io/MDLRXNWriter.java</filename>
    </modified>
    <modified>
      <diff>@@ -54,7 +54,8 @@ import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.MDLFormat;
 import org.openscience.cdk.io.setting.BooleanIOSetting;
 import org.openscience.cdk.io.setting.IOSetting;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Reads a molecule from the original MDL MOL or SDF file {@cdk.cite DAL92}. An SD files
@@ -85,7 +86,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class MDLReader extends DefaultChemObjectReader {
 
     BufferedReader input = null;
-    private LoggingTool logger = null;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLReader.class);
 
     private BooleanIOSetting forceReadAs3DCoords;
     
@@ -117,8 +119,7 @@ public class MDLReader extends DefaultChemObjectReader {
 	}
 
 	public MDLReader(Reader in, Mode mode) {
-		super.mode = mode; 
-        logger = new LoggingTool(this);
+		super.mode = mode;
         input = new BufferedReader(in);
         initIOSettings();
 	}</diff>
      <filename>src/main/org/openscience/cdk/io/MDLReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -56,7 +56,8 @@ import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.MDLV2000Format;
 import org.openscience.cdk.io.setting.BooleanIOSetting;
 import org.openscience.cdk.io.setting.IOSetting;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -95,7 +96,8 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 public class MDLV2000Reader extends DefaultChemObjectReader {
 
     BufferedReader input = null;
-    private LoggingTool logger = null;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLV2000Reader.class);
 
     private BooleanIOSetting forceReadAs3DCoords;
     private BooleanIOSetting interpretHydrogenIsotopes;
@@ -125,7 +127,6 @@ public class MDLV2000Reader extends DefaultChemObjectReader {
         this(in, Mode.RELAXED);
 	}
 	public MDLV2000Reader(Reader in, Mode mode) {
-        logger = new LoggingTool(this);
         input = new BufferedReader(in);
         initIOSettings();
         super.mode = mode;</diff>
      <filename>src/main/org/openscience/cdk/io/MDLV2000Reader.java</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,8 @@ import org.openscience.cdk.interfaces.IPseudoAtom;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.MDLV3000Format;
 import org.openscience.cdk.io.setting.IOSetting;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
 /**
@@ -71,7 +72,8 @@ import org.openscience.cdk.tools.manipulator.BondManipulator;
 public class MDLV3000Reader extends DefaultChemObjectReader {
 
     BufferedReader input = null;
-    private LoggingTool logger = null;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLV3000Reader.class);
 
     private Pattern keyValueTuple;
     private Pattern keyValueTuple2;
@@ -82,7 +84,6 @@ public class MDLV3000Reader extends DefaultChemObjectReader {
     	this(in, Mode.RELAXED);
     }
     public MDLV3000Reader(Reader in, Mode mode) {
-    	logger = new LoggingTool(this);
         input = new BufferedReader(in);
         initIOSettings();
         super.mode = mode;</diff>
      <filename>src/main/org/openscience/cdk/io/MDLV3000Reader.java</filename>
    </modified>
    <modified>
      <diff>@@ -56,7 +56,8 @@ import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.MDLFormat;
 import org.openscience.cdk.io.setting.BooleanIOSetting;
 import org.openscience.cdk.io.setting.IOSetting;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
 /**
@@ -77,7 +78,8 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 @TestClass(&quot;org.openscience.cdk.io.MDLWriterTest&quot;)
 public class MDLWriter extends DefaultChemObjectWriter {
 
-    private final static LoggingTool logger = new LoggingTool(MDLWriter.class);
+    private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLWriter.class);
 
     private BooleanIOSetting forceWriteAs2DCoords;
 </diff>
      <filename>src/main/org/openscience/cdk/io/MDLWriter.java</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.Mol2Format;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 
 /**
@@ -70,7 +71,8 @@ import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 public class Mol2Reader extends DefaultChemObjectReader {
 
     BufferedReader input = null;
-    private LoggingTool logger = null;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(Mol2Reader.class);
 
     /**
      * Contructs a new MDLReader that can read Molecule from a given Reader.
@@ -78,7 +80,6 @@ public class Mol2Reader extends DefaultChemObjectReader {
      * @param  in  The Reader to read from
      */
     public Mol2Reader(Reader in) {
-        logger = new LoggingTool(this);
         input = new BufferedReader(in);
     }
 </diff>
      <filename>src/main/org/openscience/cdk/io/Mol2Reader.java</filename>
    </modified>
    <modified>
      <diff>@@ -26,7 +26,6 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.StringWriter;
 import java.io.Writer;
-import java.util.Iterator;
 
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.annotations.TestClass;
@@ -40,7 +39,8 @@ import org.openscience.cdk.interfaces.IChemObject;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.Mol2Format;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * An output Writer that writes molecular data into the
@@ -56,7 +56,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class Mol2Writer extends DefaultChemObjectWriter {
 
     private BufferedWriter writer;
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(Mol2Writer.class);
 	  private SybylAtomTypeMatcher matcher;
     
     public Mol2Writer() {
@@ -68,7 +69,6 @@ public class Mol2Writer extends DefaultChemObjectWriter {
      * @param out the stream to write the Mol2 file to.
      */
     public Mol2Writer(Writer out) {
-    	logger = new LoggingTool(this);
     	try {
     		if (out instanceof BufferedWriter) {
                 writer = (BufferedWriter)out;</diff>
      <filename>src/main/org/openscience/cdk/io/Mol2Writer.java</filename>
    </modified>
    <modified>
      <diff>@@ -47,7 +47,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.PubChemASNFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Reads an object from ASN formated input for PubChem Compound entries. The following
@@ -63,7 +64,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class PCCompoundASNReader extends DefaultChemObjectReader {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(PCCompoundASNReader.class);
     
     IMolecule molecule = null;
     Map atomIDs = null;
@@ -75,7 +77,6 @@ public class PCCompoundASNReader extends DefaultChemObjectReader {
      */
     public PCCompoundASNReader(Reader input) {
         this.input = new BufferedReader(input);
-        logger = new LoggingTool(this);
     }
 
     public PCCompoundASNReader(InputStream input) {</diff>
      <filename>src/main/org/openscience/cdk/io/PCCompoundASNReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -64,7 +64,8 @@ import org.openscience.cdk.protein.data.PDBMonomer;
 import org.openscience.cdk.protein.data.PDBPolymer;
 import org.openscience.cdk.protein.data.PDBStrand;
 import org.openscience.cdk.protein.data.PDBStructure;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 
 /**
@@ -88,7 +89,8 @@ import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 @TestClass(&quot;org.openscience.cdk.io.PDBReaderTest&quot;)
 public class PDBReader extends DefaultChemObjectReader {
 	
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(PDBReader.class);
 	private BufferedReader _oInput; // The internal used BufferedReader
 	private BooleanIOSetting useRebondTool;
 	private BooleanIOSetting readConnect;
@@ -125,7 +127,6 @@ public class PDBReader extends DefaultChemObjectReader {
 	 *
 	 */
 	public PDBReader(Reader oIn) {
-		logger = new LoggingTool(this.getClass());
 		_oInput = new BufferedReader(oIn);
 		initIOSettings();
 		pdbFactory = null;</diff>
      <filename>src/main/org/openscience/cdk/io/PDBReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -56,7 +56,8 @@ import org.openscience.cdk.interfaces.IChemSequence;
 import org.openscience.cdk.interfaces.ICrystal;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.PMPFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Reads an frames from a PMP formated input.
@@ -78,7 +79,8 @@ public class PMPReader extends DefaultChemObjectReader {
 
 	private BufferedReader input;
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(PMPReader.class);
 
     /* Keep a copy of the PMP model */
     private IAtomContainer modelStructure;
@@ -108,7 +110,6 @@ public class PMPReader extends DefaultChemObjectReader {
      */
     public PMPReader(Reader input) {
         this.input = new BufferedReader(input);
-        logger = new LoggingTool(this);
         this.lineNumber = 0;
     
         /* compile patterns */</diff>
      <filename>src/main/org/openscience/cdk/io/PMPReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,8 @@ import java.util.zip.GZIPInputStream;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.io.formats.IChemFormat;
 import org.openscience.cdk.io.formats.IChemFormatMatcher;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * A factory for creating ChemObjectReaders. The type of reader
@@ -52,7 +53,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class ReaderFactory {
     
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ReaderFactory.class);
     private FormatFactory formatFactory = null;
     private int headerLength = 8192;
 
@@ -71,7 +73,6 @@ public class ReaderFactory {
      * @param headerLength length of the header in number of chars
      */
     public ReaderFactory(int headerLength) {
-        logger = new LoggingTool(this);
         formatFactory = new FormatFactory(headerLength);
         this.headerLength = headerLength;
     }</diff>
      <filename>src/main/org/openscience/cdk/io/ReaderFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -49,7 +49,8 @@ import org.openscience.cdk.io.formats.SDFFormat;
 import org.openscience.cdk.io.setting.BooleanIOSetting;
 import org.openscience.cdk.io.setting.IOSetting;
 import org.openscience.cdk.smiles.InvPair;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
 /**
@@ -63,7 +64,8 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 @TestClass(&quot;org.openscience.cdk.io.SDFWriterTest&quot;)
 public class SDFWriter extends DefaultChemObjectWriter {
 
-    private final static LoggingTool logger = new LoggingTool(SDFWriter.class);
+    private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(SDFWriter.class);
 
     private BufferedWriter writer;
     private BooleanIOSetting writerProperties;</diff>
      <filename>src/main/org/openscience/cdk/io/SDFWriter.java</filename>
    </modified>
    <modified>
      <diff>@@ -48,7 +48,8 @@ import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.SMILESFormat;
 import org.openscience.cdk.smiles.SmilesParser;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * This Reader reads files which has one SMILES string on each
@@ -73,7 +74,8 @@ public class SMILESReader extends DefaultChemObjectReader {
 
     private BufferedReader input = null;
     private SmilesParser sp = null;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(SMILESReader.class);
 
     /* 
      * construct a new reader from a Reader type object
@@ -81,7 +83,6 @@ public class SMILESReader extends DefaultChemObjectReader {
      * @param input reader from which input is read
      */
     public SMILESReader(Reader input) {
-        logger = new LoggingTool(this);
         this.input = new BufferedReader(input);
         sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());
     }</diff>
      <filename>src/main/org/openscience/cdk/io/SMILESReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.SMILESFormat;
 import org.openscience.cdk.smiles.SmilesGenerator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Writes the SMILES strings to a plain text file.
@@ -58,7 +59,8 @@ import org.openscience.cdk.tools.LoggingTool;
 @TestClass(&quot;org.openscience.cdk.io.SMILESWriterTest&quot;)
 public class SMILESWriter extends DefaultChemObjectWriter {
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(SMILESWriter.class);
     private BufferedWriter writer;
 
     /**
@@ -67,7 +69,6 @@ public class SMILESWriter extends DefaultChemObjectWriter {
      * @param   out  The Writer to write to
      */
     public SMILESWriter(Writer out) {
-    	logger = new LoggingTool(this);
     	try {
     		if (out instanceof BufferedWriter) {
                 writer = (BufferedWriter)out;</diff>
      <filename>src/main/org/openscience/cdk/io/SMILESWriter.java</filename>
    </modified>
    <modified>
      <diff>@@ -49,7 +49,8 @@ import org.openscience.cdk.interfaces.ICrystal;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.ShelXFormat;
 import org.openscience.cdk.math.FortranFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 
 /**
@@ -73,7 +74,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class ShelXReader extends DefaultChemObjectReader {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ShelXReader.class);
 
     /**
      * Create an ShelX file reader.
@@ -82,7 +84,6 @@ public class ShelXReader extends DefaultChemObjectReader {
      */
     public ShelXReader(Reader input) {
         this.input = new BufferedReader(input);
-        this.logger = new LoggingTool(this);
     }
 
     public ShelXReader(InputStream input) {</diff>
      <filename>src/main/org/openscience/cdk/io/ShelXReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -64,7 +64,6 @@ import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 public class ShelXWriter extends DefaultChemObjectWriter {
 
     private BufferedWriter writer;
-	//private LoggingTool logger;
 
     /**
      * Constructs a new ShelXWriter class. Output will be stored in the Writer
@@ -73,7 +72,6 @@ public class ShelXWriter extends DefaultChemObjectWriter {
      * @param out Writer to redirect the output to.
      */
     public ShelXWriter(Writer out) {
-    	//logger = new LoggingTool(this);
     	try {
     		if (out instanceof BufferedWriter) {
                 writer = (BufferedWriter)out;</diff>
      <filename>src/main/org/openscience/cdk/io/ShelXWriter.java</filename>
    </modified>
    <modified>
      <diff>@@ -49,7 +49,8 @@ import org.openscience.cdk.interfaces.ICrystal;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.VASPFormat;
 import org.openscience.cdk.math.FortranFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Read output files generated with the VASP software.
@@ -62,7 +63,8 @@ import org.openscience.cdk.tools.LoggingTool;
 @TestClass(&quot;org.openscience.cdk.io.VSPReaderTest&quot;)
 public class VASPReader extends DefaultChemObjectReader {
 
-    private LoggingTool logger = null;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(VASPReader.class);
 
     // This variable is used to parse the input file
     protected StringTokenizer st =  new StringTokenizer(&quot;&quot;, &quot;&quot;);;
@@ -88,7 +90,6 @@ public class VASPReader extends DefaultChemObjectReader {
      * @param input a &lt;code&gt;Reader&lt;/code&gt; value
      */
     public VASPReader(Reader input) {
-        logger = new LoggingTool(this);
         if (input instanceof BufferedReader) {
             this.inputBuffer = (BufferedReader)input;
         } else {</diff>
      <filename>src/main/org/openscience/cdk/io/VASPReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -39,7 +39,8 @@ import java.util.Map;
 
 import org.openscience.cdk.io.formats.IChemFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Helper tool to create IChemObjectWriters.
@@ -52,7 +53,8 @@ public class WriterFactory {
 
     private final static String IO_FORMATS_LIST = &quot;io-formats.set&quot;;
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(WriterFactory.class);
 
     private static List&lt;IChemFormat&gt; formats = null;
 
@@ -62,7 +64,6 @@ public class WriterFactory {
      * Constructs a ChemObjectIOInstantionTests.
      */
     public WriterFactory() {
-    	logger = new LoggingTool(this);
         registeredReaders = new HashMap&lt;String, Class&lt;IChemObjectWriter&gt;&gt;();
     }
 </diff>
      <filename>src/main/org/openscience/cdk/io/WriterFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.XYZFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Reads an object from XYZ formated input.
@@ -67,7 +68,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class XYZReader extends DefaultChemObjectReader {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(XYZReader.class);
 
     /**
      * Construct a new reader from a Reader type object.
@@ -76,7 +78,6 @@ public class XYZReader extends DefaultChemObjectReader {
      */
     public XYZReader(Reader input) {
         this.input = new BufferedReader(input);
-        logger = new LoggingTool(this);
     }
 
     public XYZReader(InputStream input) {</diff>
      <filename>src/main/org/openscience/cdk/io/XYZReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -42,7 +42,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.XYZFormat;
 import org.openscience.cdk.tools.FormatStringBuffer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module io
@@ -56,7 +57,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class XYZWriter extends DefaultChemObjectWriter {
   
     private BufferedWriter writer;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(XYZWriter.class);
     private FormatStringBuffer fsb;
 
     /**
@@ -65,7 +67,6 @@ public class XYZWriter extends DefaultChemObjectWriter {
     * @param out the stream to write the XYZ file to.
     */
     public XYZWriter(Writer out) {
-    	logger = new LoggingTool(this);
     	fsb = new FormatStringBuffer(&quot;%-8.6f&quot;);
     	try {
     		if (out instanceof BufferedWriter) {</diff>
      <filename>src/main/org/openscience/cdk/io/XYZWriter.java</filename>
    </modified>
    <modified>
      <diff>@@ -54,7 +54,8 @@ import org.openscience.cdk.interfaces.IPseudoAtom;
 import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.interfaces.IReactionSet;
 import org.openscience.cdk.interfaces.IStrand;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 import org.xml.sax.Attributes;
@@ -72,7 +73,7 @@ import org.xml.sax.Attributes;
  **/
 public class CMLCoreModule implements ICMLModule {
 
-    protected org.openscience.cdk.tools.LoggingTool logger;
+    protected ILoggingTool logger;
     protected final String SYSTEMID = &quot;CML-1999-05-15&quot;;
 //    protected IChemicalDocumentObject cdo;
 
@@ -148,12 +149,12 @@ public class CMLCoreModule implements ICMLModule {
     boolean cartesianAxesSet = false;
     
     public CMLCoreModule(IChemFile chemFile) {
-        logger = new LoggingTool(this);
+        logger = LoggingToolFactory.createLoggingTool(CMLCoreModule.class);
 		this.currentChemFile = chemFile;
     }
     
     public CMLCoreModule(ICMLModule conv) {
-    	logger = new LoggingTool(this);
+    	logger = LoggingToolFactory.createLoggingTool(CMLCoreModule.class);
         inherit(conv);
     }
 </diff>
      <filename>src/main/org/openscience/cdk/io/cml/CMLCoreModule.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,7 +25,8 @@
  */
 package org.openscience.cdk.io.cml;
 
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -41,7 +42,8 @@ import org.xml.sax.SAXParseException;
  **/
 public class CMLErrorHandler implements ErrorHandler {
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CMLErrorHandler.class);
 
     public boolean reportErrors = true;
     public boolean abortOnErrors = false;
@@ -51,7 +53,6 @@ public class CMLErrorHandler implements ErrorHandler {
      * class to output errors and warnings to.
      **/
     public CMLErrorHandler() {
-        logger = new LoggingTool(this);
         logger.info(&quot;instantiated&quot;);
     }
 </diff>
      <filename>src/main/org/openscience/cdk/io/cml/CMLErrorHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,7 +25,8 @@ import java.util.Hashtable;
 import java.util.Map;
 
 import org.openscience.cdk.interfaces.IChemFile;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.Attributes;
 import org.xml.sax.helpers.DefaultHandler;
 
@@ -45,7 +46,8 @@ import org.xml.sax.helpers.DefaultHandler;
 public class CMLHandler extends DefaultHandler {
     
     private ICMLModule conv;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CMLHandler.class);
     private boolean debug = true;
     
     private Map&lt;String,ICMLModule&gt; userConventions;
@@ -59,7 +61,6 @@ public class CMLHandler extends DefaultHandler {
      * @param chemFile The document in which data is stored
      **/
     public CMLHandler(IChemFile chemFile) {
-        logger = new LoggingTool(this);
         conv = new CMLCoreModule(chemFile);
         userConventions = new Hashtable&lt;String,ICMLModule&gt;();
         xpath = new CMLStack();</diff>
      <filename>src/main/org/openscience/cdk/io/cml/CMLHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,7 +25,8 @@ import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
 
@@ -41,10 +42,10 @@ import org.xml.sax.InputSource;
  **/
 public class CMLResolver implements EntityResolver {
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CMLResolver.class);
 
     public CMLResolver() {
-        logger = new LoggingTool(this);
     }
 
     /**</diff>
      <filename>src/main/org/openscience/cdk/io/cml/CMLResolver.java</filename>
    </modified>
    <modified>
      <diff>@@ -26,7 +26,8 @@
 package org.openscience.cdk.io.cml;
 
 import org.openscience.cdk.interfaces.IChemFile;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.Attributes;
 
 /**
@@ -42,17 +43,16 @@ public class JMOLANIMATIONConvention extends CMLCoreModule {
 
     private int current;
     private String frame_energy;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(JMOLANIMATIONConvention.class);
 
     public JMOLANIMATIONConvention(IChemFile chemFile) {
         super(chemFile);
-        logger = new LoggingTool(this);
         current = UNKNOWN;
     }
 
     public JMOLANIMATIONConvention(ICMLModule conv) {
         super(conv);
-        logger = new LoggingTool(this);
     }
 
     public void startElement(CMLStack xpath, String uri, String local, String raw, Attributes atts) {</diff>
      <filename>src/main/org/openscience/cdk/io/cml/JMOLANIMATIONConvention.java</filename>
    </modified>
    <modified>
      <diff>@@ -29,7 +29,8 @@ import java.util.regex.Pattern;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IBond;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Tool to help process INChI 1.12beta content.
@@ -39,10 +40,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class INChIContentProcessorTool {
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(INChIContentProcessorTool.class);;
     
     public INChIContentProcessorTool() {
-        logger = new LoggingTool(this);
     }
 
     /**</diff>
      <filename>src/main/org/openscience/cdk/io/inchi/INChIContentProcessorTool.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.ChemModel;
 import org.openscience.cdk.ChemSequence;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.MoleculeSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.Attributes;
 import org.xml.sax.helpers.DefaultHandler;
 
@@ -52,7 +53,8 @@ import org.xml.sax.helpers.DefaultHandler;
  */
 public class INChIHandler extends DefaultHandler {
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(INChIHandler.class);
     private INChIContentProcessorTool inchiTool;
 
     private ChemFile chemFile;
@@ -68,7 +70,6 @@ public class INChIHandler extends DefaultHandler {
      * Constructor for the IChIHandler.
      **/
     public INChIHandler() {
-        logger = new LoggingTool(this);
         inchiTool = new INChIContentProcessorTool();
     }
 </diff>
      <filename>src/main/org/openscience/cdk/io/inchi/INChIHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -48,7 +48,8 @@ import org.openscience.cdk.io.formats.MDLV3000Format;
 import org.openscience.cdk.io.listener.IChemObjectIOListener;
 import org.openscience.cdk.io.setting.BooleanIOSetting;
 import org.openscience.cdk.io.setting.IOSetting;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Iterating MDL SDF reader. It allows to iterate over all molecules
@@ -84,7 +85,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class IteratingMDLReader extends DefaultIteratingChemObjectReader implements IChemObjectIOListener {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IteratingMDLReader.class);
     private String currentLine;
     private IChemFormat currentFormat;
     private final ReaderFactory factory = new ReaderFactory();
@@ -103,7 +105,6 @@ public class IteratingMDLReader extends DefaultIteratingChemObjectReader impleme
      * @param builder The builder
      */
     public IteratingMDLReader(Reader in, IChemObjectBuilder builder) {
-    	logger = new LoggingTool(this);
         this.builder = builder;
     	setReader(in);
     	initIOSettings();</diff>
      <filename>src/main/org/openscience/cdk/io/iterator/IteratingMDLReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.io.PCCompoundASNReader;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.PubChemSubstancesASNFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
 /**
@@ -61,7 +62,8 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 public class IteratingPCCompoundASNReader extends DefaultIteratingChemObjectReader {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IteratingPCCompoundASNReader.class);
     private IChemObjectBuilder builder;
     
     private boolean nextAvailableIsKnown;
@@ -77,7 +79,6 @@ public class IteratingPCCompoundASNReader extends DefaultIteratingChemObjectRead
      * @param  in  The Reader to read from
      */
     public IteratingPCCompoundASNReader(Reader in, IChemObjectBuilder builder) {
-        logger = new LoggingTool(this);
         this.builder = builder;
         setReader(in);
     }</diff>
      <filename>src/main/org/openscience/cdk/io/iterator/IteratingPCCompoundASNReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,6 +27,13 @@
  */
 package org.openscience.cdk.io.iterator;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.NoSuchElementException;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.annotations.TestClass;
@@ -37,10 +44,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.SMILESFormat;
 import org.openscience.cdk.smiles.SmilesParser;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.*;
-import java.util.NoSuchElementException;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Iterating SMILES file reader. It allows to iterate over all molecules
@@ -64,7 +69,8 @@ import java.util.NoSuchElementException;
 public class IteratingSMILESReader extends DefaultIteratingChemObjectReader {
 
     private BufferedReader input;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IteratingSMILESReader.class);
     private String currentLine;
     private SmilesParser sp = null;
     
@@ -82,7 +88,6 @@ public class IteratingSMILESReader extends DefaultIteratingChemObjectReader {
      */
     @TestMethod(&quot;testSMILESFileWithNames&quot;)
     public IteratingSMILESReader(Reader in, IChemObjectBuilder builder) {
-        logger = new LoggingTool(this);
         sp = new SmilesParser(builder);
         setReader(in);
     }</diff>
      <filename>src/main/org/openscience/cdk/io/iterator/IteratingSMILESReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,8 @@ import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IChemObjectBuilder;
 import org.openscience.cdk.interfaces.IPseudoAtom;
 import org.openscience.cdk.io.cml.CMLHandler;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * CDO object needed as interface with the JCFL library for reading CML
@@ -62,7 +63,8 @@ public class EventCMLHandler extends CMLHandler {
     private IBond.Stereo bond_stereo;
     private String bond_id;
     
-    protected LoggingTool logger;
+    protected static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(EventCMLHandler.class);
     
     private DefaultEventChemObjectReader eventReader;
     
@@ -73,7 +75,6 @@ public class EventCMLHandler extends CMLHandler {
     public EventCMLHandler(DefaultEventChemObjectReader eventReader,
     		                IChemObjectBuilder builder) {
     	super(builder.newChemFile());
-        logger = new LoggingTool(this);
         this.eventReader = eventReader;
         this.builder = builder;
         clearData();</diff>
      <filename>src/main/org/openscience/cdk/io/iterator/event/EventCMLHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,8 @@ import org.openscience.cdk.io.cml.CMLResolver;
 import org.openscience.cdk.io.formats.CMLFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.listener.IReaderListener;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -66,7 +67,8 @@ public class EventCMLReader extends DefaultEventChemObjectReader {
     private IChemObjectBuilder builder;    
     private EventCMLHandler cdo;
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(EventCMLReader.class);;
 
     /**
      * Define this CMLReader to take the input from a java.io.Reader
@@ -101,8 +103,6 @@ public class EventCMLReader extends DefaultEventChemObjectReader {
     }
 
     private void init() {
-        logger = new LoggingTool(this);
-
         boolean success = false;
         // If JAXP is prefered (comes with Sun JVM 1.4.0 and higher)
         if (!success) {</diff>
      <filename>src/main/org/openscience/cdk/io/iterator/event/EventCMLReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.io.ReaderEvent;
 import org.openscience.cdk.io.listener.IChemObjectIOListener;
 import org.openscience.cdk.io.listener.IReaderListener;
 import org.openscience.cdk.io.setting.IOSetting;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Random access to text files of compounds. 
@@ -59,7 +60,8 @@ public abstract class RandomAccessReader
     extends DefaultRandomAccessChemObjectReader
     implements IRandomAccessChemObjectReader&lt;IChemObject&gt; {
 
-    protected static LoggingTool logger = new LoggingTool(RandomAccessReader.class);
+    protected static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RandomAccessReader.class);
     protected RandomAccessFile raFile;
     protected IOSetting[] headerOptions = null;
     private final String filename;</diff>
      <filename>src/main/org/openscience/cdk/io/random/RandomAccessReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,8 @@ import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.isomorphism.mcss.RMap;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module    standard
@@ -39,7 +40,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class AtomMappingTools {
 
-	private static LoggingTool logger = new LoggingTool(AtomMappingTools.class);
+	private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(AtomMappingTools.class);
 	
     /**
      * Returns a Map with the AtomNumbers, the first number corresponds to the first (or the largest</diff>
      <filename>src/main/org/openscience/cdk/isomorphism/AtomMappingTools.java</filename>
    </modified>
    <modified>
      <diff>@@ -36,7 +36,8 @@ import org.openscience.cdk.isomorphism.UniversalIsomorphismTester;
 import org.openscience.cdk.isomorphism.matchers.IQueryAtom;
 import org.openscience.cdk.isomorphism.matchers.IQueryAtomContainer;
 import org.openscience.cdk.isomorphism.mcss.RMap;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * This matches recursive smarts atoms. 
@@ -47,7 +48,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class RecursiveSmartsAtom extends SMARTSAtom {
 	private static final long serialVersionUID = 1L;
-	private final static LoggingTool logger = new LoggingTool(
+	private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(
 			RecursiveSmartsAtom.class);
 	/**
 	 * AtomContainer of the target molecule to which this recursive smarts query trying to match</diff>
      <filename>src/main/org/openscience/cdk/isomorphism/matchers/smarts/RecursiveSmartsAtom.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,6 +28,13 @@
  */
 package org.openscience.cdk.layout;
 
+import java.util.Comparator;
+import java.util.List;
+import java.util.Vector;
+
+import javax.vecmath.Point2d;
+import javax.vecmath.Vector2d;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.geometry.BondTools;
@@ -38,15 +45,10 @@ import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IMolecule;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import javax.vecmath.Point2d;
-import javax.vecmath.Vector2d;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Vector;
-
 /**
  *  Methods for generating coordinates for atoms in various situations. They can
  *  be used for Automated Structure Diagram Generation or in the interactive
@@ -61,7 +63,8 @@ public class AtomPlacer
 {
 
     public final static boolean debug = true;
-    private static LoggingTool logger = new LoggingTool(AtomPlacer.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(AtomPlacer.class);
 
     /**
      *  The molecule to be laid out. To be assigned from outside</diff>
      <filename>src/main/org/openscience/cdk/layout/AtomPlacer.java</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,8 @@ import javax.vecmath.Point2d;
 import org.openscience.cdk.geometry.GeometryTools;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * This is a wrapper class for some existing methods in AtomPlacer. It helps
@@ -53,7 +54,8 @@ public class HydrogenPlacer {
 	public final static boolean debug1 = false;
 	
 	public  void placeHydrogens2D(IAtomContainer atomContainer, double bondLength){
-	    LoggingTool logger = new LoggingTool(this);
+	    ILoggingTool logger =
+	        LoggingToolFactory.createLoggingTool(HydrogenPlacer.class);
 	    logger.debug(&quot;Entering Hydrogen Placement...&quot;);
 	    IAtom atom = null; 
 	    for (int f = 0; f &lt; atomContainer.getAtomCount();f++)
@@ -79,7 +81,8 @@ public class HydrogenPlacer {
 	}
 	
 	public  void placeHydrogens2D(IAtomContainer atomContainer, IAtom atom, double bondLength){
-		LoggingTool logger = new LoggingTool(this);
+		ILoggingTool logger =
+		    LoggingToolFactory.createLoggingTool(HydrogenPlacer.class);
 		
 		//double startAngle = 0.0;
 		//double addAngle = 0.0; </diff>
      <filename>src/main/org/openscience/cdk/layout/HydrogenPlacer.java</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,8 @@ import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IChemObject;
 import org.openscience.cdk.interfaces.IRingSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Helper class for Structure Diagram Generation. Resolves atom or bond
@@ -56,14 +57,14 @@ import org.openscience.cdk.tools.LoggingTool;
 public class OverlapResolver
 {
 
-	private org.openscience.cdk.tools.LoggingTool logger = null;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(OverlapResolver.class);
 
 	double bondLength = 1.5;
 	int maxSteps = 10000;
 	
 	public OverlapResolver()
 	{
-		logger = new LoggingTool(this);	
 	}
 	
 	</diff>
      <filename>src/main/org/openscience/cdk/layout/OverlapResolver.java</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,8 @@ import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IRing;
 import org.openscience.cdk.interfaces.IRingSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -55,7 +56,8 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 public class RingPlacer 
 {
 	final static boolean debug = false;
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RingPlacer.class);
 	
 	private IMolecule molecule; 
 	
@@ -70,7 +72,6 @@ public class RingPlacer
 	 */
 	public RingPlacer() 
 	{
-		logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/layout/RingPlacer.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,8 @@ import org.openscience.cdk.interfaces.IRing;
 import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.ringsearch.RingPartitioner;
 import org.openscience.cdk.ringsearch.SSSRFinder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerSetManipulator;
 import org.openscience.cdk.tools.manipulator.RingSetManipulator;
 
@@ -79,7 +80,8 @@ import org.openscience.cdk.tools.manipulator.RingSetManipulator;
 public class StructureDiagramGenerator
 {
 
-	private LoggingTool logger = new LoggingTool(StructureDiagramGenerator.class);
+	private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(StructureDiagramGenerator.class);
 
 	private static TemplateHandler DEFAULT_TEMPLATE_HANDLER = null;
 </diff>
      <filename>src/main/org/openscience/cdk/layout/StructureDiagramGenerator.java</filename>
    </modified>
    <modified>
      <diff>@@ -48,7 +48,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.io.CMLReader;
 import org.openscience.cdk.isomorphism.UniversalIsomorphismTester;
 import org.openscience.cdk.isomorphism.mcss.RMap;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
 /**
@@ -68,7 +69,8 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 public class TemplateHandler
 {
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(TemplateHandler.class);
 
 	private List&lt;IAtomContainer&gt; templates = null;
 
@@ -78,7 +80,6 @@ public class TemplateHandler
 	 */
 	public TemplateHandler(IChemObjectBuilder builder)
 	{
-		logger = new LoggingTool(this);
 		templates = new ArrayList&lt;IAtomContainer&gt;();
 		loadTemplates(builder);
 	}</diff>
      <filename>src/main/org/openscience/cdk/layout/TemplateHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -57,7 +57,8 @@ import org.openscience.cdk.interfaces.IReactionScheme;
 import org.openscience.cdk.interfaces.IReactionSet;
 import org.openscience.cdk.interfaces.IStrand;
 import org.openscience.cdk.tools.IDCreator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 import org.openscience.cdk.tools.manipulator.ReactionSchemeManipulator;
 import org.xmlcml.cml.base.CMLElement;
@@ -96,7 +97,8 @@ public class Convertor {
 
     public final static String NS_CML = &quot;http://www.xml-cml.org/schema&quot;;
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(Convertor.class);
 
     private final static String CUSTOMIZERS_LIST = &quot;libio-cml-customizers.set&quot;;
     private static Map&lt;String, ICMLCustomizer&gt; customizers = null;
@@ -113,7 +115,6 @@ public class Convertor {
      * @param prefix    Namespace prefix to use. If null, then no prefix is used;
      */
     public Convertor(boolean useCMLIDs, String prefix) {
-        logger = new LoggingTool(this);
         this.useCMLIDs = useCMLIDs;
         this.prefix = prefix;
         setupCustomizers();</diff>
      <filename>src/main/org/openscience/cdk/libio/cml/Convertor.java</filename>
    </modified>
    <modified>
      <diff>@@ -30,7 +30,8 @@ package org.openscience.cdk.math.qm;
 
 import org.openscience.cdk.math.Matrix;
 import org.openscience.cdk.math.Vector;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Calculates the orbitals and orbital energies of electron systems
@@ -46,7 +47,8 @@ public class ClosedShellJob
   private Orbitals orbitals;
   private Vector E;
 
-  private LoggingTool log = new LoggingTool(ClosedShellJob.class);
+  private static ILoggingTool log =
+      LoggingToolFactory.createLoggingTool(ClosedShellJob.class);
 
   private int iterations = 0;
 </diff>
      <filename>src/main/org/openscience/cdk/math/qm/ClosedShellJob.java</filename>
    </modified>
    <modified>
      <diff>@@ -30,7 +30,8 @@ package org.openscience.cdk.math.qm;
 
 import org.openscience.cdk.math.Matrix;
 import org.openscience.cdk.math.Vector;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
  
 /** 
  * Calculates the orbitals and orbital energies of electron systems
@@ -46,7 +47,8 @@ public class OneElectronJob
   private Orbitals orbitals;
   private Vector E;
 
-  private LoggingTool log = new LoggingTool(OneElectronJob.class);
+  private static ILoggingTool log =
+      LoggingToolFactory.createLoggingTool(OneElectronJob.class);
 
   /**
    * Constructs a one electron job</diff>
      <filename>src/main/org/openscience/cdk/math/qm/OneElectronJob.java</filename>
    </modified>
    <modified>
      <diff>@@ -55,8 +55,6 @@ import org.openscience.cdk.interfaces.IAtomType;
  */
 public class MM2BasedParameterSetReader {
 
-//	private final LoggingTool logger = new LoggingTool(MM2BasedParameterSetReader.class);
-	
 	private String configFile = &quot;org/openscience/cdk/modeling/forcefield/data/mm2.prm&quot;;
 	private InputStream ins = null;
 	private Map&lt;String, Object&gt; parameterSet;</diff>
      <filename>src/main/org/openscience/cdk/modeling/builder3d/MM2BasedParameterSetReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.layout.AtomPlacer;
 import org.openscience.cdk.ringsearch.RingPartitioner;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.RingSetManipulator;
 
 /**
@@ -85,7 +86,8 @@ public class ModelBuilder3D {
 
 	String forceFieldName = &quot;mm2&quot;;
 	
-	private LoggingTool logger = new LoggingTool(ModelBuilder3D.class);
+	private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ModelBuilder3D.class);
 	
 	/**
 	 * Constructor for the ModelBuilder3D object.</diff>
      <filename>src/main/org/openscience/cdk/modeling/builder3d/ModelBuilder3D.java</filename>
    </modified>
    <modified>
      <diff>@@ -49,12 +49,10 @@ import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.io.iterator.IteratingMDLReader;
 import org.openscience.cdk.isomorphism.UniversalIsomorphismTester;
-import org.openscience.cdk.isomorphism.matchers.QueryAtomContainer;
-import org.openscience.cdk.isomorphism.matchers.QueryAtomContainerCreator;
 import org.openscience.cdk.isomorphism.mcss.RMap;
 import org.openscience.cdk.nonotify.NoNotificationChemObjectBuilder;
-import org.openscience.cdk.ringsearch.RingPartitioner;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 import org.openscience.cdk.tools.manipulator.RingSetManipulator;
 
@@ -71,7 +69,8 @@ import org.openscience.cdk.tools.manipulator.RingSetManipulator;
 public class TemplateHandler3D {
 	
 	private static final IChemObjectBuilder builder = NoNotificationChemObjectBuilder.getInstance();
-	private static final LoggingTool logger = new LoggingTool(TemplateHandler3D.class);
+	private static final ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(TemplateHandler3D.class);
 	
     IMolecule molecule;
     IRingSet sssr;</diff>
      <filename>src/main/org/openscience/cdk/modeling/builder3d/TemplateHandler3D.java</filename>
    </modified>
    <modified>
      <diff>@@ -85,9 +85,7 @@ public class AngleBending {
 	/**
 	 *  Constructor for the AngleBending object
 	 */
-	public AngleBending() {
-	        //logger = new LoggingTool(this);
-	}
+	public AngleBending() {}
 
 	public void setAngleBendingFlag(boolean flag){
 		angleBending=flag;</diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/AngleBending.java</filename>
    </modified>
    <modified>
      <diff>@@ -67,15 +67,10 @@ public class BondStretching {
 	double[][] dDeltar = null;
 	double[][][] ddDeltar = null;
 
-	//private LoggingTool logger;
-
-
 	/**
 	 *  Constructor for the BondStretching object
 	 */
-	public BondStretching() {        
-		//logger = new LoggingTool(this);
-	}
+	public BondStretching() {}
 
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/BondStretching.java</filename>
    </modified>
    <modified>
      <diff>@@ -22,7 +22,8 @@ package org.openscience.cdk.modeling.forcefield;
 
 import javax.vecmath.GVector;
 
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 
 /**
@@ -41,14 +42,14 @@ public class ConjugateGradientMethod {
 	boolean orthogonalDirectionsProperty = true;
 	GVector diffgk_gkminus1 = null;
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(ConjugateGradientMethod.class);
 
 
 	/**
 	 *  Constructor for the ConjugateGradientMethod object
 	 */
 	public ConjugateGradientMethod() {
-		logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/ConjugateGradientMethod.java</filename>
    </modified>
    <modified>
      <diff>@@ -70,14 +70,10 @@ public class ElectrostaticInteractions {
 	double[] iQ = null;
 	double electrostatic14interactionsScale = 0.75;	// Scale factor for 1-4 interactions. To take in the future from mmff94.prm files.
 	
-	//private LoggingTool logger;
-	
 	/**
 	 *  Constructor for the ElectrostaticInteractions object
 	 */
-	public ElectrostaticInteractions() {        
-		//logger = new LoggingTool(this);
-	}
+	public ElectrostaticInteractions() {}
 
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/ElectrostaticInteractions.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,12 +20,11 @@
  */
 package org.openscience.cdk.modeling.forcefield;
 
+import javax.vecmath.GVector;
+
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.graph.ConnectivityChecker;
 
-import javax.vecmath.GVector;
-//import org.openscience.cdk.tools.LoggingTool;
-
 /**
  *  To work with the coordinates of the molecule, like get the 3d coordinates of the atoms or 
  *  calculate the distance between two atoms.
@@ -42,19 +41,13 @@ public class ForceField extends GeometricMinimizer{
         boolean cgm_flag=true;
         boolean nrm_flag=true;
 	
-	//private LoggingTool logger;
-
-
 	/**
 	 *  Constructor for the ForceField object
 	 */
-	public ForceField() {        
-		//logger = new LoggingTool(this);
-	}
+	public ForceField() {}
 	
 	public ForceField(Molecule molecule) throws Exception {
 		setMolecule(molecule, false);
-		//logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/ForceField.java</filename>
    </modified>
    <modified>
      <diff>@@ -26,8 +26,6 @@ import org.openscience.cdk.modeling.builder3d.ForceFieldConfigurator;
 
 import javax.vecmath.GMatrix;
 import javax.vecmath.GVector;
-import java.util.Hashtable;
-//import org.openscience.cdk.tools.LoggingTool;
 import java.util.Map;
 
 
@@ -79,7 +77,6 @@ public class GeometricMinimizer {
 	double infiniteNorm;
 
 	NewtonRaphsonMethod nrm = new NewtonRaphsonMethod();
-	//private LoggingTool logger;
 
 	IMolecule molecule;
 
@@ -87,9 +84,7 @@ public class GeometricMinimizer {
 	/**
 	 *  Constructor for the GeometricMinimizer object
 	 */
-	public GeometricMinimizer() {
-		//logger = new LoggingTool(this);
-	}
+	public GeometricMinimizer() {}
 
 
 	public void setMolecule(IMolecule mol, boolean clone) throws Exception {</diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/GeometricMinimizer.java</filename>
    </modified>
    <modified>
      <diff>@@ -22,7 +22,8 @@ package org.openscience.cdk.modeling.forcefield;
 
 import javax.vecmath.GVector;
 
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 
 /**
@@ -53,14 +54,14 @@ public class LineSearch {
 	double fxLS = 0;
 	double lambdabOld = 0;
 	double tol = 0.0001;
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(LineSearch.class);
 
 
 	/**
 	 *  Constructor for the LineSearch object
 	 */
 	public LineSearch() {        
-		logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/LineSearch.java</filename>
    </modified>
    <modified>
      <diff>@@ -22,7 +22,7 @@ package org.openscience.cdk.modeling.forcefield;
 
 import javax.vecmath.GVector;
 
-//import org.openscience.cdk.tools.LoggingTool;
+
 /**
  * 
  *
@@ -85,9 +85,6 @@ public class LineSearchForTheWolfeConditions {
 	private double d2;
 	private double alphaiplus1;
 	
-	//private LoggingTool logger;
-
-	
 	public LineSearchForTheWolfeConditions(IPotentialFunction pfUser, String method) {
 		this.pf = pfUser;
 		if ((method == &quot;sdm&quot;) | (method == &quot;cgm&quot;)) {c2 = 0.07;}</diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/LineSearchForTheWolfeConditions.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,15 +20,12 @@
  */
 package org.openscience.cdk.modeling.forcefield;
 
-import java.util.Hashtable;
 import java.util.Map;
 
 import javax.vecmath.GMatrix;
 import javax.vecmath.GVector;
 
 import org.openscience.cdk.interfaces.IAtomContainer;
-//import org.openscience.cdk.tools.LoggingTool;
-
 
 /**
  * MMFF94 energy function.
@@ -50,8 +47,6 @@ public class MMFF94EnergyFunction implements IPotentialFunction {
 	GMatrix energyHessian = null;
 	double[] forHessian = null;
 	
-	//private LoggingTool logger;
-	
 	BondStretching bs = new BondStretching();
 	AngleBending ab = new AngleBending();
 	StretchBendInteractions sbi = new StretchBendInteractions();
@@ -72,8 +67,6 @@ public class MMFF94EnergyFunction implements IPotentialFunction {
 		t.setMMFF94TorsionsParameters(molecule, mmff94Tables);
 		vdwi.setMMFF94VanDerWaalsParameters(molecule, mmff94Tables);        
 		ei.setMMFF94ElectrostaticParameters(molecule, mmff94Tables);
-		
-		//logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/MMFF94EnergyFunction.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,8 @@ package org.openscience.cdk.modeling.forcefield;
 import javax.vecmath.GMatrix;
 import javax.vecmath.GVector;
 
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 import Jama.Matrix;
 
@@ -44,14 +45,13 @@ import Jama.Matrix;
 public class NewtonRaphsonMethod {
 	GVector gradientPerInverseHessianVector = null;
 	Matrix matrixForDeterminatCalculation = null;
-	private LoggingTool logger;
-
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(NewtonRaphsonMethod.class);
 
 	/**
 	 *  Constructor for the NR object
 	 */
 	public NewtonRaphsonMethod() {
-		logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/NewtonRaphsonMethod.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,8 +20,6 @@
  */
 package org.openscience.cdk.modeling.forcefield;
 
-//import org.openscience.cdk.tools.LoggingTool;
-
 
 /**			
  *  Cutoffs and Smoothing Functions.
@@ -36,15 +34,11 @@ public class SmoothingFunctions {
 	double cutoffr0 = 5;	// For Smoothing function (s)
 	double cutoffr1 = 6;	// For Smoothing function (s)
 	double dampingFactor = 1;	// For Smoothing function (s)
-	//private LoggingTool logger;
-
 
 	/**
 	 *  Constructor for the SmoothingFunctions object
 	 */
-	public SmoothingFunctions() {        
-		//logger = new LoggingTool(this);
-	}
+	public SmoothingFunctions() {}
 
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/SmoothingFunctions.java</filename>
    </modified>
    <modified>
      <diff>@@ -22,8 +22,6 @@ package org.openscience.cdk.modeling.forcefield;
 
 import javax.vecmath.GVector;
 
-//import org.openscience.cdk.tools.LoggingTool;
-
 
 /**
  * Find a direction from a point of the coordinates space using the steepest descents approach.
@@ -36,12 +34,8 @@ import javax.vecmath.GVector;
  */
 public class SteepestDescentsMethod {
 	GVector sk = null;
-	//private LoggingTool logger;
-
 
-	public SteepestDescentsMethod() {        
-		//logger = new LoggingTool(this);
-	}
+	public SteepestDescentsMethod() {}
 
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/SteepestDescentsMethod.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,8 @@ import org.openscience.cdk.modeling.builder3d.MMFF94ParametersCall;
 import org.openscience.cdk.qsar.IAtomicDescriptor;
 import org.openscience.cdk.qsar.descriptors.atomic.PeriodicTablePositionDescriptor;
 import org.openscience.cdk.qsar.result.IntegerResult;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -74,7 +75,8 @@ public class StretchBendInteractions {
 
 	BondStretching bs = new BondStretching();
 	AngleBending ab = new AngleBending();
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(StretchBendInteractions.class);
 
 	GVector moleculeCurrentCoordinates = null;
 	boolean[] changeAtomCoordinates = null;
@@ -85,7 +87,6 @@ public class StretchBendInteractions {
 	 *  Constructor for the StretchBendInteractions object
 	 */
 	public StretchBendInteractions() {
-		logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/StretchBendInteractions.java</filename>
    </modified>
    <modified>
      <diff>@@ -75,9 +75,6 @@ public class Torsions {
 	IBond[] bondConnectedBefore = null;
 	IBond[] bondConnectedAfter = null;
 
-
-	//private LoggingTool logger;
-
 	GVector moleculeCurrentCoordinates = null;
 	boolean[] changeAtomCoordinates = null;
 	int changedCoordinates;
@@ -87,7 +84,6 @@ public class Torsions {
 	 *  Constructor for the Torsions object
 	 */
 	public Torsions() {        
-		//logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/Torsions.java</filename>
    </modified>
    <modified>
      <diff>@@ -98,13 +98,10 @@ public class VanDerWaalsInteractions {
 	double[] ivdw = null;
 	double vdwScale14 = 1;	// Scale factor for 1-4 interactions. To take in the future from mmff94.prm files.
 	
-	//private LoggingTool logger;
-	
 	/**
 	 *  Constructor for the VanDerWaalsInteractions object
 	 */
 	public VanDerWaalsInteractions() {        
-		//logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/modeling/forcefield/VanDerWaalsInteractions.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,6 +23,13 @@
  */
 package org.openscience.cdk.pharmacophore;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.vecmath.Point3d;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.annotations.TestClass;
@@ -37,13 +44,8 @@ import org.openscience.cdk.isomorphism.matchers.IQueryAtom;
 import org.openscience.cdk.isomorphism.matchers.IQueryAtomContainer;
 import org.openscience.cdk.isomorphism.mcss.RMap;
 import org.openscience.cdk.smiles.smarts.SMARTSQueryTool;
-import org.openscience.cdk.tools.LoggingTool;
-
-import javax.vecmath.Point3d;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Identifies atoms whose 3D arrangement matches a specified pharmacophore query.
@@ -139,7 +141,8 @@ import java.util.List;
  */
 @TestClass(&quot;org.openscience.cdk.pharmacophore.PharmacophoreMatcherTest&quot;)
 public class PharmacophoreMatcher {
-    private LoggingTool logger = new LoggingTool(PharmacophoreMatcher.class);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(PharmacophoreMatcher.class);
     private PharmacophoreQuery pharmacophoreQuery = null;
     private List&lt;List&lt;PharmacophoreAtom&gt;&gt; matchingPAtoms = null;
     private List&lt;List&lt;IBond&gt;&gt; matchingPBonds = null;</diff>
      <filename>src/main/org/openscience/cdk/pharmacophore/PharmacophoreMatcher.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,18 +20,6 @@
  */
 package org.openscience.cdk.protein;
 
-import org.openscience.cdk.ChemFile;
-import org.openscience.cdk.config.AtomTypeFactory;
-import org.openscience.cdk.interfaces.*;
-import org.openscience.cdk.io.ISimpleChemObjectReader;
-import org.openscience.cdk.io.ReaderFactory;
-import org.openscience.cdk.protein.data.PDBAtom;
-import org.openscience.cdk.tools.GridGenerator;
-import org.openscience.cdk.tools.LoggingTool;
-import org.openscience.cdk.tools.PeriodicTable;
-import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
-
-import javax.vecmath.Point3d;
 import java.io.BufferedWriter;
 import java.io.FileReader;
 import java.io.FileWriter;
@@ -43,6 +31,26 @@ import java.util.List;
 import java.util.Map;
 import java.util.Vector;
 
+import javax.vecmath.Point3d;
+
+import org.openscience.cdk.ChemFile;
+import org.openscience.cdk.config.AtomTypeFactory;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IBioPolymer;
+import org.openscience.cdk.interfaces.IChemFile;
+import org.openscience.cdk.interfaces.IChemModel;
+import org.openscience.cdk.interfaces.IChemObject;
+import org.openscience.cdk.interfaces.IChemSequence;
+import org.openscience.cdk.interfaces.IMoleculeSet;
+import org.openscience.cdk.io.ISimpleChemObjectReader;
+import org.openscience.cdk.io.ReaderFactory;
+import org.openscience.cdk.protein.data.PDBAtom;
+import org.openscience.cdk.tools.GridGenerator;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
+import org.openscience.cdk.tools.PeriodicTable;
+import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
+
 /**
  * The detection of pocket and cavities in a bioPolymer is done similar to the program 
  * LIGSITE {@cdk.cite MH1997}.
@@ -58,7 +66,8 @@ import java.util.Vector;
  */
 public class ProteinPocketFinder {
 	
-	private final LoggingTool logger = new LoggingTool(ProteinPocketFinder.class);
+	private final ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ProteinPocketFinder.class);
 
 	int solvantValue = 0;
 	int proteinInterior = -1;</diff>
      <filename>src/main/org/openscience/cdk/protein/ProteinPocketFinder.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,9 +20,23 @@
  */
 package org.openscience.cdk.qsar;
 
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
 import nu.xom.Attribute;
 import nu.xom.Element;
 import nu.xom.Elements;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.dict.Dictionary;
@@ -32,8 +46,8 @@ import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IBond;
-import org.openscience.cdk.tools.LoggingTool;
-
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.Modifier;
@@ -47,7 +61,6 @@ import java.util.Set;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
-
 /**
  * A class that provides access to automatic descriptor calculation and more.
  * &lt;p/&gt;
@@ -90,7 +103,8 @@ public class DescriptorEngine {
     private List&lt;String&gt; classNames = null;
     private List&lt;IDescriptor&gt; descriptors = null;
     private List&lt;DescriptorSpecification&gt; speclist = null;
-    private static LoggingTool logger = new LoggingTool(DescriptorEngine.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DescriptorEngine.class);
 
     /**
      * Instantiates the DescriptorEngine.</diff>
      <filename>src/main/org/openscience/cdk/qsar/DescriptorEngine.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,8 @@
  */
 package org.openscience.cdk.qsar.descriptors.atomic;
 
+import java.io.IOException;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.AtomTypeFactory;
@@ -35,9 +37,8 @@ import org.openscience.cdk.qsar.DescriptorSpecification;
 import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IAtomicDescriptor;
 import org.openscience.cdk.qsar.result.DoubleResult;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.IOException;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  *  This class return the covalent radius of a given atom.
@@ -67,8 +68,8 @@ import java.io.IOException;
 public class CovalentRadiusDescriptor implements IAtomicDescriptor {
 
     private AtomTypeFactory factory = null;
-    private LoggingTool logger;
-
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CovalentRadiusDescriptor.class);
 
     /**
      *  Constructor for the CovalentRadiusDescriptor object.
@@ -77,7 +78,6 @@ public class CovalentRadiusDescriptor implements IAtomicDescriptor {
      *  @throws ClassNotFoundException if an error occurs during tom typing
      */
     public CovalentRadiusDescriptor() throws IOException, ClassNotFoundException {
-        logger = new LoggingTool(this);
     }
 
 </diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/atomic/CovalentRadiusDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,10 @@
  */
 package org.openscience.cdk.qsar.descriptors.atomic;
 
+import java.io.IOException;
+
+import javax.vecmath.Point3d;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.AtomTypeFactory;
@@ -35,10 +39,8 @@ import org.openscience.cdk.qsar.DescriptorSpecification;
 import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IAtomicDescriptor;
 import org.openscience.cdk.qsar.result.DoubleResult;
-import org.openscience.cdk.tools.LoggingTool;
-
-import javax.vecmath.Point3d;
-import java.io.IOException;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  *  Inductive atomic hardness of an atom in a polyatomic system can be defined
@@ -94,7 +96,8 @@ public class InductiveAtomicHardnessDescriptor implements IAtomicDescriptor {
 
     private static final String[] names = {&quot;indAtomHardnesss&quot;};
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(InductiveAtomicHardnessDescriptor.class);
 	private AtomTypeFactory factory = null;
 
 
@@ -105,7 +108,6 @@ public class InductiveAtomicHardnessDescriptor implements IAtomicDescriptor {
 	 *@exception  ClassNotFoundException  Description of the Exception
 	 */
 	public InductiveAtomicHardnessDescriptor() throws IOException, ClassNotFoundException {
-		logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/atomic/InductiveAtomicHardnessDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,10 @@
  */
 package org.openscience.cdk.qsar.descriptors.atomic;
 
+import java.io.IOException;
+
+import javax.vecmath.Point3d;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.AtomTypeFactory;
@@ -36,10 +40,8 @@ import org.openscience.cdk.qsar.DescriptorSpecification;
 import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IAtomicDescriptor;
 import org.openscience.cdk.qsar.result.DoubleResult;
-import org.openscience.cdk.tools.LoggingTool;
-
-import javax.vecmath.Point3d;
-import java.io.IOException;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  *  Inductive atomic softness of an atom in a polyatomic system can be defined
@@ -95,7 +97,8 @@ public class InductiveAtomicSoftnessDescriptor implements IAtomicDescriptor {
 
     private static final String[] names = {&quot;indAtomSoftness&quot;};
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(InductiveAtomicSoftnessDescriptor.class);
 	private AtomTypeFactory factory = null;
 
 
@@ -106,7 +109,6 @@ public class InductiveAtomicSoftnessDescriptor implements IAtomicDescriptor {
 	 *@exception  ClassNotFoundException  Description of the Exception
 	 */
 	public InductiveAtomicSoftnessDescriptor() throws IOException, ClassNotFoundException {
-		logger = new LoggingTool(this);
 	}
 
 </diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/atomic/InductiveAtomicSoftnessDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -71,7 +71,6 @@ public class PeriodicTablePositionDescriptor implements IAtomicDescriptor {
 	 *  Constructor for the PeriodicTablePositionDescriptor object
 	 */
 	public PeriodicTablePositionDescriptor() {
-		//logger = new LoggingTool(this);
 	    if (periodicTable == null) { 
 		periodicTable = new Hashtable&lt;String, Integer&gt;();
 		periodicTable.put(&quot;H&quot;, 1);</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/atomic/PeriodicTablePositionDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,13 @@
  */
 package org.openscience.cdk.qsar.descriptors.atomic;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3d;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.Ring;
@@ -30,21 +37,20 @@ import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector;
 import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IAtomContainerSet;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.qsar.DescriptorSpecification;
 import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IAtomicDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import javax.vecmath.Point3d;
-import javax.vecmath.Vector3d;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * This class calculates G3R proton descriptors used in neural networks for H1
  * NMR shift.
@@ -84,7 +90,8 @@ public class RDFProtonDescriptor_G3R implements IAtomicDescriptor {
 
 	private IAtomContainerSet varAtomContainerSet = null;
 	
-    private final static LoggingTool logger = new LoggingTool(RDFProtonDescriptor_G3R.class);
+    private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RDFProtonDescriptor_G3R.class);
 
     private static String[] descriptorNames;
 </diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_G3R.java</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,13 @@
  */
 package org.openscience.cdk.qsar.descriptors.atomic;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3d;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.Ring;
@@ -30,21 +37,20 @@ import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector;
 import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IAtomContainerSet;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.qsar.DescriptorSpecification;
 import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IAtomicDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import javax.vecmath.Point3d;
-import javax.vecmath.Vector3d;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * This class calculates GDR proton descriptors used in neural networks for H1 NMR shift.
  * &lt;p/&gt;
@@ -78,7 +84,8 @@ public class RDFProtonDescriptor_GDR implements IAtomicDescriptor {
     private IRingSet varRingSet = null;
     private IAtomContainerSet varAtomContainerSet = null;
     
-    private final static LoggingTool logger = new LoggingTool(RDFProtonDescriptor_GDR.class);
+    private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RDFProtonDescriptor_GDR.class);
     private final int gdr_desc_length = 7;
 
     private static String[] descriptorNames;</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GDR.java</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,13 @@
  */
 package org.openscience.cdk.qsar.descriptors.atomic;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3d;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.Ring;
@@ -30,21 +37,20 @@ import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector;
 import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IAtomContainerSet;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.qsar.DescriptorSpecification;
 import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IAtomicDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import javax.vecmath.Point3d;
-import javax.vecmath.Vector3d;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 
 /**
  * This class calculates GHR proton descriptors used in neural networks for H1 NMR shift.
@@ -79,7 +85,8 @@ public class RDFProtonDescriptor_GHR implements IAtomicDescriptor {
     private IRingSet varRingSet = null;
     private IAtomContainerSet varAtomContainerSet = null;
 
-    private final static LoggingTool logger = new LoggingTool(RDFProtonDescriptor_GHR.class);
+    private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RDFProtonDescriptor_GHR.class);
 
 	private static String[] descriptorNames;
     private final int ghr_desc_length = 15;</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GHR.java</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,13 @@
  */
 package org.openscience.cdk.qsar.descriptors.atomic;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3d;
+
 import org._3pq.jgrapht.Edge;
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.Molecule;
@@ -32,21 +39,20 @@ import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.graph.MoleculeGraphs;
 import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IAtomContainerSet;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.qsar.DescriptorSpecification;
 import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IAtomicDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import javax.vecmath.Point3d;
-import javax.vecmath.Vector3d;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * This class calculates GHR topological proton descriptors used in neural networks for H1 NMR shift.
  * &lt;p/&gt;
@@ -80,7 +86,8 @@ public class RDFProtonDescriptor_GHR_topol implements IAtomicDescriptor {
     private IRingSet varRingSet = null;
     private IAtomContainerSet varAtomContainerSet = null;
     
-    private final static LoggingTool logger = new LoggingTool(RDFProtonDescriptor_GHR_topol.class);
+    private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RDFProtonDescriptor_GHR_topol.class);
     private final int ghr_topol_desc_length = 15;
 
     /**</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GHR_topol.java</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,13 @@
  */
 package org.openscience.cdk.qsar.descriptors.atomic;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3d;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.Ring;
@@ -30,21 +37,20 @@ import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector;
 import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IAtomContainerSet;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.qsar.DescriptorSpecification;
 import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IAtomicDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import javax.vecmath.Point3d;
-import javax.vecmath.Vector3d;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * This class calculates GDR proton descriptors used in neural networks for H1 NMR shift.
  * &lt;p/&gt;
@@ -78,7 +84,8 @@ public class RDFProtonDescriptor_GSR implements IAtomicDescriptor {
     private IRingSet varRingSet = null;
     private IAtomContainerSet varAtomContainerSet = null;
     
-    private final static LoggingTool logger = new LoggingTool(RDFProtonDescriptor_GSR.class);
+    private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RDFProtonDescriptor_GSR.class);
 
     private final int gsr_desc_length = 7;
 </diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GSR.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,12 +24,19 @@
  */
 package org.openscience.cdk.qsar.descriptors.molecular;
 
+import java.lang.reflect.Method;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.atomtype.EStateAtomTypeMatcher;
 import org.openscience.cdk.exception.CDKException;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IAtomType;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IRing;
+import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.qsar.DescriptorSpecification;
 import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IMolecularDescriptor;
@@ -39,12 +46,11 @@ import org.openscience.cdk.qsar.result.IDescriptorResult;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.tools.AtomicProperties;
 import org.openscience.cdk.tools.CDKHydrogenAdder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
-import java.lang.reflect.Method;
-
 /**
  * This class calculates ALOGP (Ghose-Crippen LogKow) and the 
  * Ghose-Crippen molar refractivity @cdk.cite{GHOSE1986} @cdk.cite{GHOSE1987}.
@@ -93,7 +99,8 @@ import java.lang.reflect.Method;
  */
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.ALOGPDescriptorTest&quot;)
 public class ALOGPDescriptor implements IMolecularDescriptor {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ALOGPDescriptor.class);
 
     IAtomContainer atomContainer;
     IRingSet rs;
@@ -362,8 +369,6 @@ public class ALOGPDescriptor implements IMolecularDescriptor {
 
 
     public ALOGPDescriptor() throws CDKException {
-        logger = new LoggingTool(this);
-
         try {
             ap = AtomicProperties.getInstance();
         } catch (Exception e) {</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/ALOGPDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -37,7 +37,8 @@ import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.result.DoubleResult;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Sum of the atomic polarizabilities (including implicit hydrogens).
@@ -75,7 +76,8 @@ import org.openscience.cdk.tools.LoggingTool;
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.APolDescriptorTest&quot;)
 public class APolDescriptor implements IMolecularDescriptor {
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(APolDescriptor.class);
     /* Atomic polarizabilities ordered by atomic number from 1 to 102. */
     private static double[] polarizabilities;
     private static final String[] names = {&quot;apol&quot;};
@@ -84,7 +86,6 @@ public class APolDescriptor implements IMolecularDescriptor {
      *  Constructor for the APolDescriptor object.
      */
     public APolDescriptor() {
-        logger = new LoggingTool(this);
         if (polarizabilities == null) {
             polarizabilities = new double[] {0, 0.666793, 0.204956, 24.3, 5.6, 3.03, 1.76, 
                 1.1, 0.802, 0.557, 0.3956, 23.6, 10.6, 6.8, 5.38, 3.63, 2.9, 2.18, 1.6411, </diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/APolDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,8 +23,6 @@
  */
 package org.openscience.cdk.qsar.descriptors.molecular;
 
-import Jama.EigenvalueDecomposition;
-import Jama.Matrix;
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.annotations.TestClass;
@@ -46,10 +44,14 @@ import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.qsar.result.DoubleArrayResultType;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
 import org.openscience.cdk.tools.CDKHydrogenAdder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.LonePairElectronChecker;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
+import Jama.EigenvalueDecomposition;
+import Jama.Matrix;
+
 /**
  * Eigenvalue based descriptor noted for its utility in chemical diversity.
  * Described by Pearlman et al. {@cdk.cite PEA99}.
@@ -127,7 +129,8 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  */
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.BCUTDescriptorTest&quot;)
 public class BCUTDescriptor implements IMolecularDescriptor {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(BCUTDescriptor.class);
 
     // the number of negative &amp; positive eigenvalues
     // to return for each class of BCUT descriptor
@@ -136,8 +139,6 @@ public class BCUTDescriptor implements IMolecularDescriptor {
     private boolean checkAromaticity;
 
     public BCUTDescriptor() {
-        logger = new LoggingTool(this);
-
         // set the default number of BCUT's
         this.nhigh = 1;
         this.nlow = 1;</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/BCUTDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.result.DoubleResult;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Sum of the absolute value of the difference between atomic polarizabilities 
@@ -72,7 +73,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.BPolDescriptorTest&quot;)
 public class BPolDescriptor implements IMolecularDescriptor {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(BPolDescriptor.class);
     /* Atomic polarizabilities ordered by atomic number from 1 to 102. */
     private static double[] polarizabilities;
     private static final String[] names = {&quot;bpol&quot;};
@@ -81,7 +83,6 @@ public class BPolDescriptor implements IMolecularDescriptor {
      *  Constructor for the APolDescriptor object
      */
     public BPolDescriptor() {
-        logger = new LoggingTool(this);
     // atomic polarizabilities ordered by atomic number from 1 to 102
     if (polarizabilities == null) {
             polarizabilities = new double[] {0, 0.666793, 0.204956, 24.3, 5.6, 3.03, 1.76,</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/BPolDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -32,7 +32,8 @@ import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.qsar.result.DoubleArrayResultType;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Calculates 29 Charged Partial Surface Area (CPSA) descriptors.
@@ -151,10 +152,10 @@ public class CPSADescriptor implements IMolecularDescriptor {
             &quot;THSA&quot;, &quot;TPSA&quot;, &quot;RHSA&quot;, &quot;RPSA&quot;
     };
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CPSADescriptor.class);
 
     public CPSADescriptor() {
-        logger = new LoggingTool(this);
     }
 
     @TestMethod(&quot;testGetSpecification&quot;)</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/CPSADescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,8 @@
  */
 package org.openscience.cdk.qsar.descriptors.molecular;
 
+import java.util.List;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.exception.CDKException;
@@ -32,11 +34,8 @@ import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
 import org.openscience.cdk.qsar.result.IntegerArrayResult;
 import org.openscience.cdk.qsar.result.IntegerArrayResultType;
-import org.openscience.cdk.tools.LoggingTool;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
-import java.util.List;
-
 /**
  * Topological descriptor characterizing the carbon connectivity.
  * &lt;p/&gt;
@@ -86,7 +85,6 @@ public class CarbonTypesDescriptor implements IMolecularDescriptor {
     };
     
     public CarbonTypesDescriptor() {
-        LoggingTool logger = new LoggingTool(this);
     }
 
     @TestMethod(&quot;testGetSpecification&quot;)</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/CarbonTypesDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,10 @@
 
 package org.openscience.cdk.qsar.descriptors.molecular;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
@@ -46,14 +50,11 @@ import org.openscience.cdk.qsar.result.IDescriptorResult;
 import org.openscience.cdk.ringsearch.SSSRFinder;
 import org.openscience.cdk.smiles.SmilesParser;
 import org.openscience.cdk.tools.CDKHydrogenAdder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 
 /**
  * Evaluates chi chain descriptors.
@@ -93,7 +94,8 @@ import java.util.List;
  */
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.ChiChainDescriptorTest&quot;)
 public class ChiChainDescriptor implements IMolecularDescriptor {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ChiChainDescriptor.class);
     private SmilesParser sp;
 
     private static final String[] names = {
@@ -103,7 +105,6 @@ public class ChiChainDescriptor implements IMolecularDescriptor {
 
 
     public ChiChainDescriptor() {
-        logger = new LoggingTool(this);
         sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());
 
     }</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/ChiChainDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,9 @@
 
 package org.openscience.cdk.qsar.descriptors.molecular;
 
+import java.util.Iterator;
+import java.util.List;
+
 import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
@@ -44,13 +47,11 @@ import org.openscience.cdk.qsar.result.DoubleArrayResultType;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
 import org.openscience.cdk.smiles.SmilesParser;
 import org.openscience.cdk.tools.CDKHydrogenAdder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * Evaluates chi cluster descriptors.
  * &lt;p/&gt;
@@ -87,7 +88,8 @@ import java.util.List;
  */
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.ChiClusterDescriptorTest&quot;)
 public class ChiClusterDescriptor implements IMolecularDescriptor {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ChiClusterDescriptor.class);
     private SmilesParser sp;
 
     private static final String[] names = {
@@ -96,7 +98,6 @@ public class ChiClusterDescriptor implements IMolecularDescriptor {
     };
 
     public ChiClusterDescriptor() {
-        logger = new LoggingTool(this);
         sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());
     }
 </diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/ChiClusterDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,9 @@
  */
 package org.openscience.cdk.qsar.descriptors.molecular;
 
+import java.util.Iterator;
+import java.util.List;
+
 import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
@@ -43,13 +46,11 @@ import org.openscience.cdk.qsar.result.DoubleArrayResultType;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
 import org.openscience.cdk.smiles.SmilesParser;
 import org.openscience.cdk.tools.CDKHydrogenAdder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * Evaluates chi path cluster descriptors.
  * &lt;p/&gt;
@@ -85,7 +86,8 @@ import java.util.List;
  */
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.ChiPathClusterDescriptorTest&quot;)
 public class ChiPathClusterDescriptor implements IMolecularDescriptor {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ChiPathClusterDescriptor.class);
     private SmilesParser sp;
 
     private static final String[] names = {
@@ -94,7 +96,6 @@ public class ChiPathClusterDescriptor implements IMolecularDescriptor {
     };
 
     public ChiPathClusterDescriptor() {
-        logger = new LoggingTool(this);
         sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());
     }
 </diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/ChiPathClusterDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,10 @@
  */
 package org.openscience.cdk.qsar.descriptors.molecular;
 
+import java.util.ArrayList;
+
+import javax.vecmath.Point3d;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.IsotopeFactory;
@@ -37,10 +41,8 @@ import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.qsar.result.DoubleArrayResultType;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
-import org.openscience.cdk.tools.LoggingTool;
-
-import javax.vecmath.Point3d;
-import java.util.ArrayList;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 
 /**
@@ -89,7 +91,8 @@ import java.util.ArrayList;
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.GravitationalIndexDescriptorTest&quot;)
 public class GravitationalIndexDescriptor implements IMolecularDescriptor {
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(GravitationalIndexDescriptor.class);
 
     private class pair {
         int x, y;
@@ -107,7 +110,6 @@ public class GravitationalIndexDescriptor implements IMolecularDescriptor {
     };
 
     public GravitationalIndexDescriptor() {
-        logger = new LoggingTool(this);
     }
 
     @TestMethod(&quot;testGetSpecification&quot;)</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/GravitationalIndexDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,7 +24,8 @@
  */
 package org.openscience.cdk.qsar.descriptors.molecular;
 
-import Jama.Matrix;
+import javax.vecmath.Point3d;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.exception.CDKException;
@@ -37,10 +38,11 @@ import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.qsar.result.DoubleArrayResultType;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.PeriodicTable;
 
-import javax.vecmath.Point3d;
+import Jama.Matrix;
 
 /**
  * Evaluates length over breadth descriptors.
@@ -66,14 +68,14 @@ import javax.vecmath.Point3d;
  */
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.LengthOverBreadthDescriptorTest&quot;)
 public class LengthOverBreadthDescriptor implements IMolecularDescriptor {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(LengthOverBreadthDescriptor.class);
 
     private static final String[] names = {&quot;LOBMAX&quot;, &quot;LOBMIN&quot;};
     /**
      * Constructor for the LengthOverBreadthDescriptor object.
      */
     public LengthOverBreadthDescriptor() {
-        logger = new LoggingTool(this);
     }
 
 </diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/LengthOverBreadthDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -19,8 +19,8 @@
  */
 package org.openscience.cdk.qsar.descriptors.molecular;
 
-import Jama.EigenvalueDecomposition;
-import Jama.Matrix;
+import javax.vecmath.Point3d;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.IsotopeFactory;
@@ -35,10 +35,12 @@ import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.qsar.result.DoubleArrayResultType;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 
-import javax.vecmath.Point3d;
+import Jama.EigenvalueDecomposition;
+import Jama.Matrix;
 
 /**
  * A descriptor that calculates the moment of inertia and radius of gyration.
@@ -88,17 +90,14 @@ import javax.vecmath.Point3d;
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.MomentOfInertiaDescriptorTest&quot;)
 public class MomentOfInertiaDescriptor implements IMolecularDescriptor {
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MomentOfInertiaDescriptor.class);
 
     private static final String[] names = {
             &quot;MOMI-X&quot;, &quot;MOMI-Y&quot;, &quot;MOMI-Z&quot;,
             &quot;MOMI-XY&quot;, &quot;MOMI-XZ&quot;, &quot;MOMI-YZ&quot;, &quot;MOMI-R&quot;
     };
 
-    public MomentOfInertiaDescriptor() {
-        logger = new LoggingTool(this);
-    }
-
     @TestMethod(&quot;testGetSpecification&quot;)
     public DescriptorSpecification getSpecification() {
         return new DescriptorSpecification(</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/MomentOfInertiaDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,8 +23,11 @@
  */
 package org.openscience.cdk.qsar.descriptors.molecular;
 
-import Jama.EigenvalueDecomposition;
-import Jama.Matrix;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.vecmath.Point3d;
+
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
@@ -37,11 +40,11 @@ import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.qsar.result.DoubleArrayResultType;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
-import javax.vecmath.Point3d;
-import java.util.HashMap;
-import java.util.Map;
+import Jama.EigenvalueDecomposition;
+import Jama.Matrix;
 
 
 /**
@@ -127,12 +130,12 @@ import java.util.Map;
 @TestClass(&quot;org.openscience.cdk.qsar.descriptors.molecular.WHIMDescriptorTest&quot;)
 public class WHIMDescriptor implements IMolecularDescriptor {
 
-    LoggingTool logger;
+    static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(WHIMDescriptor.class);
     String type = &quot;&quot;;
     Map&lt;String,Double&gt; hashatwt, hashvdw, hasheneg, hashpol;
 
     public WHIMDescriptor() {
-        logger = new LoggingTool(this);
         this.type = &quot;unity&quot;; // default weighting scheme
 
         // set up the values from TOD98</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/molecular/WHIMDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,17 @@
 
 package org.openscience.cdk.qsar.descriptors.protein;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.openscience.cdk.Monomer;
 import org.openscience.cdk.Strand;
 import org.openscience.cdk.annotations.TestMethod;
@@ -35,13 +46,8 @@ import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.result.DoubleArrayResult;
 import org.openscience.cdk.qsar.result.IDescriptorResult;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.*;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 
 /**
@@ -114,7 +120,8 @@ import java.util.*;
  * @see         IBioPolymer
  */
 public class TaeAminoAcidDescriptor implements IMolecularDescriptor {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(TaeAminoAcidDescriptor.class);
     private Map&lt;String, Double[]&gt; TAEParams = new HashMap&lt;String, Double[]&gt;();
     private int ndesc = 147;
 
@@ -176,8 +183,6 @@ public class TaeAminoAcidDescriptor implements IMolecularDescriptor {
     }
 
     public TaeAminoAcidDescriptor() {
-        logger = new LoggingTool(this);
-
         nametrans.put(&quot;a&quot;, &quot;ala&quot;);
         nametrans.put(&quot;c&quot;, &quot;cys&quot;);
         nametrans.put(&quot;d&quot;, &quot;asp&quot;);</diff>
      <filename>src/main/org/openscience/cdk/qsar/descriptors/protein/TaeAminoAcidDescriptor.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,13 +24,19 @@
 
 package org.openscience.cdk.qsar.model.R;
 
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+
 import org.omegahat.R.Java.REvaluator;
 import org.omegahat.R.Java.ROmegahatInterpreter;
 import org.openscience.cdk.qsar.model.IModel;
 import org.openscience.cdk.qsar.model.QSARModelException;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.*;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /** Base class for modeling classes that use R as the backend.
  *
@@ -85,7 +91,8 @@ public abstract class RModel implements IModel {
      * A boolean that indicates whether the R/Java subsystem has been initialized or not.
      */
     private static boolean doneInit = false;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RModel.class);
         
     private void loadRFunctions(REvaluator evaluator) {
         String scriptLocator = &quot;org/openscience/cdk/qsar/model/data/cdkSJava.R&quot;;
@@ -160,8 +167,6 @@ public abstract class RModel implements IModel {
      * @param args A String[] containing the command line parameters as elements
      */
     public RModel(String[] args) {
-        logger = new LoggingTool(this);
-
         String initRFromString = System.getProperty(&quot;initRFromString&quot;);
         boolean useDisk = true;
         if (initRFromString != null &amp;&amp; initRFromString.equals(&quot;true&quot;)) {
@@ -194,8 +199,6 @@ public abstract class RModel implements IModel {
      */
     public RModel() {
         String[] args = {&quot;--vanilla&quot;,&quot;-q&quot;, &quot;--slave&quot;};
-        logger = new LoggingTool(this);
-
         String initRFromString = System.getProperty(&quot;initRFromString&quot;);
         boolean useDisk = true;
         if (initRFromString != null &amp;&amp; initRFromString.equals(&quot;true&quot;)) {</diff>
      <filename>src/main/org/openscience/cdk/qsar/model/R/RModel.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,15 +24,16 @@
 
 package org.openscience.cdk.qsar.model.R2;
 
+import java.io.File;
+import java.util.HashMap;
+
 import org.openscience.cdk.qsar.model.QSARModelException;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.rosuda.JRI.RBool;
 import org.rosuda.JRI.REXP;
 import org.rosuda.JRI.RList;
 
-import java.io.File;
-import java.util.HashMap;
-
 /**
  * A modeling class that provides a computational neural network regression model.
  * &lt;p/&gt;
@@ -127,7 +128,8 @@ public class CNNRegressionModel extends RModel {
 
     private double[][] modelPredict = null;
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CNNRegressionModel.class);
 
     private void setDefaults() {
         // lets set the default values of the arguments that are specified
@@ -171,8 +173,6 @@ public class CNNRegressionModel extends RModel {
      */
     public CNNRegressionModel() throws QSARModelException {
         super();
-        logger = new LoggingTool(this);
-
         params = new HashMap();
         int currentID = CNNRegressionModel.globalID;
         CNNRegressionModel.globalID++;
@@ -205,8 +205,6 @@ public class CNNRegressionModel extends RModel {
      */
     public CNNRegressionModel(double[][] x, double[] y, int size) throws QSARModelException {
         super();
-        logger = new LoggingTool(this);
-
         params = new HashMap();
         int currentID = CNNRegressionModel.globalID;
         CNNRegressionModel.globalID++;
@@ -259,8 +257,6 @@ public class CNNRegressionModel extends RModel {
      */
     public CNNRegressionModel(double[][] x, double[][] y, int size) throws QSARModelException {
         super();
-        logger = new LoggingTool(this);
-
         params = new HashMap();
         int currentID = CNNRegressionModel.globalID;
         CNNRegressionModel.globalID++;</diff>
      <filename>src/main/org/openscience/cdk/qsar/model/R2/CNNRegressionModel.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,14 +23,15 @@
  */
 package org.openscience.cdk.qsar.model.R2;
 
+import java.io.File;
+import java.util.HashMap;
+
 import org.openscience.cdk.qsar.model.QSARModelException;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.rosuda.JRI.REXP;
 import org.rosuda.JRI.RList;
 
-import java.io.File;
-import java.util.HashMap;
-
 /**
  * A modeling class that provides a linear least squares regression model.
  * &lt;p/&gt;
@@ -115,7 +116,8 @@ public class LinearRegressionModel extends org.openscience.cdk.qsar.model.R2.RMo
 
     private RList modelPredict = null;
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(LinearRegressionModel.class);
 
     /**
      * Constructs a LinearRegressionModel object.
@@ -130,7 +132,6 @@ public class LinearRegressionModel extends org.openscience.cdk.qsar.model.R2.RMo
      */
     public LinearRegressionModel() throws QSARModelException {
         super();
-        logger = new LoggingTool(this);
         params = new HashMap();
         int currentID = LinearRegressionModel.globalID;
         org.openscience.cdk.qsar.model.R2.LinearRegressionModel.globalID++;</diff>
      <filename>src/main/org/openscience/cdk/qsar/model/R2/LinearRegressionModel.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import java.util.Set;
 
 import org.openscience.cdk.qsar.model.IModel;
 import org.openscience.cdk.qsar.model.QSARModelException;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.rosuda.JRI.REXP;
 import org.rosuda.JRI.RList;
 import org.rosuda.JRI.RMainLoopCallbacks;
@@ -118,7 +119,8 @@ public abstract class RModel implements IModel {
      * A boolean that indicates whether the R/Java subsystem has been initialized or not.
      */
     private static boolean doneInit = false;
-    private static LoggingTool logger = new LoggingTool(RModel.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RModel.class);
 
     private void checkEnvironmentVariables()  throws QSARModelException {
         String rhome = System.getenv(&quot;R_HOME&quot;);</diff>
      <filename>src/main/org/openscience/cdk/qsar/model/R2/RModel.java</filename>
    </modified>
    <modified>
      <diff>@@ -36,7 +36,8 @@ import org.openscience.cdk.dict.DictionaryDatabase;
 import org.openscience.cdk.dict.EntryReact;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;The base class for all chemical reactions objects in this cdk. 
@@ -51,7 +52,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 @TestClass(&quot;org.openscience.cdk.reaction.ReactionEngineTest&quot;)
 public class ReactionEngine{
-	private static LoggingTool logger = new LoggingTool(ReactionEngine.class);
+	private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ReactionEngine.class);
 
 	private Dictionary dictionary;
 	public HashMap&lt;String, Object&gt; paramsMap;</diff>
      <filename>src/main/org/openscience/cdk/reaction/ReactionEngine.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.AdductionLPMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -83,14 +84,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.AdductionProtonLPReactionTest&quot;)
 public class AdductionProtonLPReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(AdductionProtonLPReaction.class);
 	
 	/**
 	 * Constructor of the AdductionProtonLPReaction object.
 	 *
 	 */
 	public AdductionProtonLPReaction(){
-		logger = new LoggingTool(this);
 	}
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/AdductionProtonLPReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.AdductionPBMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -83,14 +84,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.AdductionProtonPBReactionTest&quot;)
 public class AdductionProtonPBReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(AdductionProtonPBReaction.class);
 	
 	/**
 	 * Constructor of the AdductionProtonPBReaction object.
 	 *
 	 */
 	public AdductionProtonPBReaction(){
-		logger = new LoggingTool(this);
 	}
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/AdductionProtonPBReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.AdductionLPMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -83,14 +84,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.AdductionSodiumLPReactionTest&quot;)
 public class AdductionSodiumLPReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(AdductionSodiumLPReaction.class);
 	
 	/**
 	 * Constructor of the AdductionSodiumLPReaction object.
 	 *
 	 */
 	public AdductionSodiumLPReaction(){
-		logger = new LoggingTool(this);
 	}
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/AdductionSodiumLPReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.HeterolyticCleavageMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which participate mass spectrum process.  
@@ -80,14 +81,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.CarbonylEliminationReactionTest&quot;)
 public class CarbonylEliminationReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(CarbonylEliminationReaction.class);
 	
 	/**
 	 * Constructor of the CarbonylEliminationReaction object.
 	 *
 	 */
 	public CarbonylEliminationReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the CarbonylEliminationReaction object.</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/CarbonylEliminationReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RemovingSEofNBMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which make an electron impact for for Non-Bonding Electron Lost. 
@@ -80,7 +81,8 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.ElectronImpactNBEReactionTest&quot;)
 public class ElectronImpactNBEReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(ElectronImpactNBEReaction.class);
 
 	/**
 	 * Constructor of the ElectronImpactNBEReaction object.
@@ -88,7 +90,6 @@ public class ElectronImpactNBEReaction extends ReactionEngine implements IReacti
 	 */
 	public ElectronImpactNBEReaction(){
 		super();
-		logger = new LoggingTool(this);
 	}
 	/**
 	 * Gets the specification attribute of the ElectronImpactNBEReaction object.</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/ElectronImpactNBEReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RemovingSEofBMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which make an electron impact for pi-Bond Dissociation.&lt;/p&gt;
@@ -80,14 +81,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.ElectronImpactPDBReactionTest&quot;)
 public class ElectronImpactPDBReaction extends ReactionEngine implements IReactionProcess{
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ElectronImpactPDBReaction.class);
 
     /**
      * Constructor of the ElectronImpactPDBReaction object.
      *
      */
     public ElectronImpactPDBReaction(){
-        logger = new LoggingTool(this);
     }
     /**
      *  Gets the specification attribute of the ElectronImpactPDBReaction object.</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/ElectronImpactPDBReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RemovingSEofBMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which make an electron impact for Sigma Bond Dissociation.&lt;/p&gt;
@@ -79,14 +80,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.ElectronImpactSDBReactionTest&quot;)
 public class ElectronImpactSDBReaction extends ReactionEngine implements IReactionProcess{
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ElectronImpactSDBReaction.class);
 
     /**
      * Constructor of the ElectronImpactSDBReaction object.
      *
      */
     public ElectronImpactSDBReaction(){
-        logger = new LoggingTool(this);
     }
     /**
      *  Gets the specification attribute of the ElectronImpactSDBReaction object.</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/ElectronImpactSDBReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.HeterolyticCleavageMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which a bond is broken displacing the electron to one of the
@@ -88,14 +89,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.HeterolyticCleavagePBReactionTest&quot;)
 public class HeterolyticCleavagePBReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(HeterolyticCleavagePBReaction.class);
 	
 	/**
 	 * Constructor of the HeterolyticCleavagePBReaction object.
 	 *
 	 */
 	public HeterolyticCleavagePBReaction(){
-		logger = new LoggingTool(this);
 	}
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/HeterolyticCleavagePBReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.HeterolyticCleavageMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which a bond is broken displacing the electron to one of the
@@ -88,14 +89,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.HeterolyticCleavageSBReactionTest&quot;)
 public class HeterolyticCleavageSBReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(HeterolyticCleavageSBReaction.class);
 	
 	/**
 	 * Constructor of the HeterolyticCleavageSBReaction object.
 	 *
 	 */
 	public HeterolyticCleavageSBReaction(){
-		logger = new LoggingTool(this);
 	}
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/HeterolyticCleavageSBReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.HomolyticCleavageMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which breaks the bond homogeneously leading to radical ions.
@@ -81,13 +82,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.HomolyticCleavageReactionTest&quot;)
 public class HomolyticCleavageReaction extends ReactionEngine implements IReactionProcess{
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(HomolyticCleavageReaction.class);
+
     /**
      * Constructor of the HomolyticCleavageReaction object.
      *
      */
     public HomolyticCleavageReaction(){
-        logger = new LoggingTool(this);
     }
     /**
      *  Gets the specification attribute of the HomolyticCleavageReaction object.</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/HomolyticCleavageReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.reaction.ReactionEngine;
 import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;HyperconjugationReaction is the stabilizing interaction that results 
@@ -81,14 +82,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.HyperconjugationReactionTest&quot;)
 public class HyperconjugationReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(HyperconjugationReaction.class);
 
 	/**
 	 * Constructor of the HyperconjugationReaction object
 	 *
 	 */
 	public HyperconjugationReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the HyperconjugationReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/HyperconjugationReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -46,7 +46,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
@@ -83,14 +84,14 @@ import org.openscience.cdk.tools.manipulator.BondManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.PiBondingMovementReactionTest&quot;)
 public class PiBondingMovementReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(PiBondingMovementReaction.class);
 	
 	/**
 	 * Constructor of the PiBondingMovementReaction object
 	 *
 	 */
 	public PiBondingMovementReaction(){
-		logger = new LoggingTool(this);
 	}
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/PiBondingMovementReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RadicalSiteIonizationMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which participate mass spectrum process. Homolitic dissocitation. 
@@ -80,14 +81,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalChargeSiteInitiationHReactionTest&quot;)
 public class RadicalChargeSiteInitiationHReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalChargeSiteInitiationReaction.class);
 	
 	/**
 	 * Constructor of the RadicalChargeSiteInitiationHReaction object
 	 *
 	 */
 	public RadicalChargeSiteInitiationHReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalChargeSiteInitiationHReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalChargeSiteInitiationHReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RadicalSiteIonizationMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which participate mass spectrum process. Homolitic dissocitation. 
@@ -81,14 +82,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalChargeSiteInitiationReactionTest&quot;)
 public class RadicalChargeSiteInitiationReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalChargeSiteInitiationReaction.class);
 	
 	/**
 	 * Constructor of the RadicalChargeSiteInitiationReaction object
 	 *
 	 */
 	public RadicalChargeSiteInitiationReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalChargeSiteInitiationReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalChargeSiteInitiationReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,8 @@ import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.tools.HOSECodeGenerator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -88,14 +89,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalSiteHrAlphaReactionTest&quot;)
 public class RadicalSiteHrAlphaReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalSiteHrAlphaReaction.class);
 
 	/**
 	 * Constructor of the RadicalSiteHrAlphaReaction object
 	 *
 	 */
 	public RadicalSiteHrAlphaReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalSiteHrAlphaReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalSiteHrAlphaReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,8 @@ import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.tools.HOSECodeGenerator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -88,14 +89,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalSiteHrBetaReactionTest&quot;)
 public class RadicalSiteHrBetaReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalSiteHrBetaReaction.class);
 
 	/**
 	 * Constructor of the RadicalSiteHrBetaReaction object
 	 *
 	 */
 	public RadicalSiteHrBetaReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalSiteHrBetaReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalSiteHrBetaReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,8 @@ import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.tools.HOSECodeGenerator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -88,14 +89,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalSiteHrDeltaReactionTest&quot;)
 public class RadicalSiteHrDeltaReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalSiteHrDeltaReaction.class);
 
 	/**
 	 * Constructor of the RadicalSiteHrDeltaReaction object
 	 *
 	 */
 	public RadicalSiteHrDeltaReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalSiteHrDeltaReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalSiteHrDeltaReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,8 @@ import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.tools.HOSECodeGenerator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -88,14 +89,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalSiteHrGammaReactionTest&quot;)
 public class RadicalSiteHrGammaReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalSiteHrGammaReaction.class);
 
 	/**
 	 * Constructor of the RadicalSiteHrGammaReaction object
 	 *
 	 */
 	public RadicalSiteHrGammaReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalSiteHrGammaReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalSiteHrGammaReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RadicalSiteIonizationMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which participate mass spectrum process. Homolitic dissocitation. 
@@ -80,14 +81,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalSiteInitiationHReactionTest&quot;)
 public class RadicalSiteInitiationHReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalSiteInitiationHReaction.class);
 	
 	/**
 	 * Constructor of the RadicalSiteInitiationHReaction object
 	 *
 	 */
 	public RadicalSiteInitiationHReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalSiteInitiationHReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalSiteInitiationHReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RadicalSiteIonizationMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which participate mass spectrum process. Homolitic dissocitation. 
@@ -81,14 +82,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalSiteInitiationReactionTest&quot;)
 public class RadicalSiteInitiationReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalSiteInitiationReaction.class);
 	
 	/**
 	 * Constructor of the RadicalSiteInitiationReaction object
 	 *
 	 */
 	public RadicalSiteInitiationReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalSiteInitiationReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalSiteInitiationReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -52,7 +52,8 @@ import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.tools.HOSECodeGenerator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -89,14 +90,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalSiteRrAlphaReactionTest&quot;)
 public class RadicalSiteRrAlphaReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalSiteRrAlphaReaction.class);
 
 	/**
 	 * Constructor of the RadicalSiteRrAlphaReaction object
 	 *
 	 */
 	public RadicalSiteRrAlphaReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalSiteRrAlphaReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalSiteRrAlphaReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -52,7 +52,8 @@ import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.tools.HOSECodeGenerator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -89,14 +90,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalSiteRrBetaReactionTest&quot;)
 public class RadicalSiteRrBetaReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalSiteRrBetaReaction.class);
 
 	/**
 	 * Constructor of the RadicalSiteRrBetaReaction object
 	 *
 	 */
 	public RadicalSiteRrBetaReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalSiteRrBetaReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalSiteRrBetaReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -52,7 +52,8 @@ import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.tools.HOSECodeGenerator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -89,14 +90,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalSiteRrDeltaReactionTest&quot;)
 public class RadicalSiteRrDeltaReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalSiteRrDeltaReaction.class);
 
 	/**
 	 * Constructor of the RadicalSiteRrDeltaReaction object
 	 *
 	 */
 	public RadicalSiteRrDeltaReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalSiteRrDeltaReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalSiteRrDeltaReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -52,7 +52,8 @@ import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.tools.HOSECodeGenerator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -89,14 +90,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RadicalSiteRrGammaReactionTest&quot;)
 public class RadicalSiteRrGammaReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RadicalSiteRrGammaReaction.class);
 
 	/**
 	 * Constructor of the RadicalSiteRrGammaReaction object
 	 *
 	 */
 	public RadicalSiteRrGammaReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RadicalSiteRrGammaReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RadicalSiteRrGammaReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RearrangementChargeMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 /**
  * &lt;p&gt;IReactionProcess which participate in movement resonance. 
  * This reaction could be represented as [A-]-B=C =&gt; A=B-[C-]. Due to 
@@ -83,14 +84,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RearrangementAnionReactionTest&quot;)
 public class RearrangementAnionReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RearrangementAnionReaction.class);
 
 	/**
 	 * Constructor of the RearrangementAnionReaction object
 	 *
 	 */
 	public RearrangementAnionReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RearrangementAnionReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RearrangementAnionReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RearrangementChargeMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which participate in movement resonance. 
@@ -83,14 +84,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RearrangementCationReactionTest&quot;)
 public class RearrangementCationReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RearrangementCationReaction.class);
 
 	/**
 	 * Constructor of the RearrangementCharge2Reaction object
 	 *
 	 */
 	public RearrangementCationReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RearrangementCationReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RearrangementCationReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RearrangementChargeMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 /**
  * &lt;p&gt;IReactionProcess which participate in movement resonance. 
  * This reaction could be represented as |A-B=C =&gt; [A+]=B-[C-]. Due to 
@@ -83,14 +84,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RearrangementLonePairReactionTest&quot;)
 public class RearrangementLonePairReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RearrangementLonePairReaction.class);
 
 	/**
 	 * Constructor of the RearrangementLonePairReaction object
 	 *
 	 */
 	public RearrangementLonePairReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RearrangementLonePairReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RearrangementLonePairReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.RearrangementChargeMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -85,14 +86,14 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.RearrangementRadicalReactionTest&quot;)
 public class RearrangementRadicalReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(RearrangementRadicalReaction.class);
 
 	/**
 	 * Constructor of the RearrangementRadicalReaction object
 	 *
 	 */
 	public RearrangementRadicalReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the RearrangementRadicalReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/RearrangementRadicalReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,8 @@ import org.openscience.cdk.reaction.ReactionEngine;
 import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which participate in movement resonance. 
@@ -81,14 +82,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.SharingAnionReactionTest&quot;)
 public class SharingAnionReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(SharingAnionReaction.class);
 
 	/**
 	 * Constructor of the SharingAnionReaction object.
 	 *
 	 */
 	public SharingAnionReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the SharingAnionReaction object.</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/SharingAnionReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.HeterolyticCleavageMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which participate in movement resonance. 
@@ -83,14 +84,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.SharingChargeDBReactionTest&quot;)
 public class SharingChargeDBReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(SharingChargeDBReaction.class);
 
 	/**
 	 * Constructor of the SharingChargeDBReaction object.
 	 *
 	 */
 	public SharingChargeDBReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the SharingChargeDBReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/SharingChargeDBReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.HeterolyticCleavageMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which participate in movement resonance. 
@@ -83,14 +84,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.SharingChargeSBReactionTest&quot;)
 public class SharingChargeSBReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(SharingChargeSBReaction.class);
 
 	/**
 	 * Constructor of the SharingChargeSBReaction object.
 	 *
 	 */
 	public SharingChargeSBReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the SharingChargeSBReaction object</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/SharingChargeSBReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,8 @@ import org.openscience.cdk.reaction.ReactionEngine;
 import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which participate in movement resonance. 
@@ -81,14 +82,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.SharingLonePairReactionTest&quot;)
 public class SharingLonePairReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(SharingLonePairReaction.class);
 
 	/**
 	 * Constructor of the SharingLonePairReaction object.
 	 *
 	 */
 	public SharingLonePairReaction(){
-		logger = new LoggingTool(this);
 	}
 	/**
 	 *  Gets the specification attribute of the SharingLonePairReaction object.</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/SharingLonePairReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,8 @@ import org.openscience.cdk.reaction.ReactionSpecification;
 import org.openscience.cdk.reaction.mechanism.TautomerizationMechanism;
 import org.openscience.cdk.reaction.type.parameters.IParameterReact;
 import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;IReactionProcess which produces a tautomerization chemical reaction. 
@@ -83,14 +84,14 @@ import org.openscience.cdk.tools.LoggingTool;
  **/
 @TestClass(value=&quot;org.openscience.cdk.reaction.type.TautomerizationReactionTest&quot;)
 public class TautomerizationReaction extends ReactionEngine implements IReactionProcess{
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(TautomerizationReaction.class);
 	
 	/**
 	 * Constructor of the TautomerizationReaction object.
 	 *
 	 */
 	public TautomerizationReaction(){
-		logger = new LoggingTool(this);
 	}
 
 	/**</diff>
      <filename>src/main/org/openscience/cdk/reaction/type/TautomerizationReaction.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,15 +33,14 @@ import java.awt.event.ActionEvent;
 import java.util.Hashtable;
 
 import javax.swing.AbstractAction;
+import javax.swing.JFrame;
 import javax.swing.JMenuItem;
 import javax.swing.JPopupMenu;
-import javax.swing.JFrame;
 
-import org.openscience.cdk.interfaces.IChemObject;
-//import org.openscience.cdk.applications.jchempaint.JChemPaintMenuBar;
-//import org.openscience.cdk.applications.jchempaint.JChemPaintPanel;
 import org.openscience.cdk.controller.CDKPopupMenu;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.interfaces.IChemObject;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Superclass of all JChemPaint GUI actions
@@ -71,7 +70,8 @@ public class JCPAction2D extends AbstractAction
 	/**
 	 *  Description of the Field
 	 */
-	protected static LoggingTool logger = null;
+	protected static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(JCPAction2D.class);
 
 	private Hashtable actions = null;
 	private Hashtable popupActions = null;
@@ -103,11 +103,7 @@ public class JCPAction2D extends AbstractAction
 	public JCPAction2D(JFrame jcpPanel, String type, boolean isPopupAction)
 	{
 		super();
-		//logger.debug(&quot;JCPAction-&gt;type: &quot; + type);
-		if (JCPAction2D.logger == null)
-		{
-			JCPAction2D.logger = new LoggingTool(this);
-		}
+		logger.debug(&quot;JCPAction-&gt;type: &quot; + type);
 		if (this.actions == null)
 		{
 			this.actions = new Hashtable();</diff>
      <filename>src/main/org/openscience/cdk/renderer/JCPAction2D.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,17 +25,23 @@
  */
 package org.openscience.cdk.ringsearch;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.graph.ConnectivityChecker;
 import org.openscience.cdk.graph.SpanningTree;
-import org.openscience.cdk.interfaces.*;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IMolecule;
+import org.openscience.cdk.interfaces.IRing;
+import org.openscience.cdk.interfaces.IRingSet;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Finds the Set of all Rings. This is an implementation of the algorithm
@@ -64,7 +70,8 @@ import java.util.List;
 @TestClass(&quot;org.openscience.cdk.ringsearch.AllRingsFinderTest&quot;)
 public class AllRingsFinder
 {
-	private final LoggingTool logger = new LoggingTool(AllRingsFinder.class);
+	private final ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(AllRingsFinder.class);
 	
 	public boolean debug = false;
 	private long timeout = 5000;</diff>
      <filename>src/main/org/openscience/cdk/ringsearch/AllRingsFinder.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import org.openscience.cdk.Ring;
 import org.openscience.cdk.RingSet;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IBond;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.RingSetManipulator;
 
 /**
@@ -59,15 +60,12 @@ import org.openscience.cdk.tools.manipulator.RingSetManipulator;
  */
 public class FiguerasSSSRFinder {
 
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(FiguerasSSSRFinder.class);
     
 	int trimCounter = 0;
 	private static final String PATH = &quot;org.openscience.cdk.ringsearch.FiguerasSSSRFinderRFinder.PATH&quot;;
 
-    public FiguerasSSSRFinder() {
-        logger = new LoggingTool(this);
-    }
-    
 	/**
 	 * Finds the Smallest Set of Smallest Rings.
 	 *</diff>
      <filename>src/main/org/openscience/cdk/ringsearch/FiguerasSSSRFinder.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,22 +27,33 @@
  */
 package org.openscience.cdk.smiles;
 
-import org.openscience.cdk.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.openscience.cdk.Atom;
+import org.openscience.cdk.CDKConstants;
+import org.openscience.cdk.Molecule;
+import org.openscience.cdk.Ring;
+import org.openscience.cdk.RingSet;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector;
 import org.openscience.cdk.atomtype.CDKAtomTypeMatcher;
 import org.openscience.cdk.exception.CDKException;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomType;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IMolecule;
+import org.openscience.cdk.interfaces.IMoleculeSet;
+import org.openscience.cdk.interfaces.IRing;
+import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.interfaces.IAtomType.Hybridization;
 import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.ringsearch.SSSRFinder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.RingManipulator;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
 /**
  * Tool that tries to deduce bond orders based on connectivity and hybridization
  * for a number of common ring systems.
@@ -59,7 +70,8 @@ import java.util.List;
 public class DeduceBondSystemTool {
 
 	private AllRingsFinder allRingsFinder;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DeduceBondSystemTool.class);
 	
     private List&lt;Integer[]&gt; listOfRings = null;
     	
@@ -70,7 +82,6 @@ public class DeduceBondSystemTool {
      */
     public DeduceBondSystemTool() {
     	allRingsFinder = new AllRingsFinder();
-        logger = new LoggingTool(this);
     }
 
     public boolean isOK(IMolecule m) throws CDKException {</diff>
      <filename>src/main/org/openscience/cdk/smiles/DeduceBondSystemTool.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,11 @@
  */
 package org.openscience.cdk.smiles;
 
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Stack;
+import java.util.StringTokenizer;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
@@ -32,18 +37,21 @@ import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector;
 import org.openscience.cdk.atomtype.CDKAtomTypeMatcher;
 import org.openscience.cdk.exception.InvalidSmilesException;
 import org.openscience.cdk.graph.ConnectivityChecker;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IAtomType;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IChemObjectBuilder;
+import org.openscience.cdk.interfaces.IMolecule;
+import org.openscience.cdk.interfaces.IMoleculeSet;
+import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.interfaces.IAtomType.Hybridization;
 import org.openscience.cdk.tools.CDKHydrogenAdder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.Stack;
-import java.util.StringTokenizer;
-
 /**
  * Parses a SMILES {@cdk.cite SMILESTUT} string and an AtomContainer. The full
  * SSMILES subset {@cdk.cite SSMILESTUT} and the '%' tag for more than 10 rings
@@ -77,7 +85,8 @@ public class SmilesParser {
 
 	private final static String HAS_HARDCODED_HYDROGEN_COUNT = &quot;SmilesParser.HasHardcodedHydrogenCount&quot;;
 	
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(SmilesParser.class);
 	private CDKHydrogenAdder hAdder;
 		
 	private int status = 0;
@@ -90,7 +99,6 @@ public class SmilesParser {
 	 */
     public SmilesParser(IChemObjectBuilder builder)
 	{
-		logger = new LoggingTool(this);
 		this.builder = builder;
 		try {
 			hAdder = CDKHydrogenAdder.getInstance(builder);</diff>
      <filename>src/main/org/openscience/cdk/smiles/SmilesParser.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,12 @@
  */
 package org.openscience.cdk.smiles.smarts;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
@@ -40,15 +46,10 @@ import org.openscience.cdk.ringsearch.AllRingsFinder;
 import org.openscience.cdk.ringsearch.SSSRFinder;
 import org.openscience.cdk.smiles.smarts.parser.SMARTSParser;
 import org.openscience.cdk.smiles.smarts.parser.TokenMgrError;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 /**
  * This class provides a easy to use wrapper around SMARTS matching
  * functionality. &lt;p/&gt; User code that wants to do SMARTS matching should use
@@ -134,7 +135,8 @@ import java.util.Map;
  */
 @TestClass(&quot;org.openscience.cdk.smiles.smarts.SMARTSQueryToolTest&quot;)
 public class SMARTSQueryTool {
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(SMARTSQueryTool.class);
     private String smarts;
     private IAtomContainer atomContainer = null;
     private QueryAtomContainer query = null;
@@ -142,7 +144,6 @@ public class SMARTSQueryTool {
     private List&lt;List&lt;Integer&gt;&gt; matchingAtoms = null;
 
     public SMARTSQueryTool(String smarts) throws CDKException {
-        logger = new LoggingTool(this);
         this.smarts = smarts;
         try {
             initializeQuery();</diff>
      <filename>src/main/org/openscience/cdk/smiles/smarts/SMARTSQueryTool.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,6 @@ PARSER_BEGIN(SMARTSParser)
  * Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  * (or see http://www.gnu.org/copyleft/lesser.html)
  */
-
 package org.openscience.cdk.smiles.smarts.parser;
 
 import java.io.StringReader;
@@ -41,7 +40,6 @@ import java.util.Stack;
 
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.isomorphism.matchers.QueryAtomContainer;
-import org.openscience.cdk.tools.LoggingTool;
 
 /**
  * This parser implements a nearly complete subset of the SMARTS syntax as defined on</diff>
      <filename>src/main/org/openscience/cdk/smiles/smarts/parser/SMARTSParser.jjt</filename>
    </modified>
    <modified>
      <diff>@@ -19,6 +19,9 @@
  */
 package org.openscience.cdk.smiles.smarts.parser.visitor;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
@@ -27,12 +30,83 @@ import org.openscience.cdk.isomorphism.matchers.IQueryAtom;
 import org.openscience.cdk.isomorphism.matchers.IQueryAtomContainer;
 import org.openscience.cdk.isomorphism.matchers.IQueryBond;
 import org.openscience.cdk.isomorphism.matchers.QueryAtomContainer;
-import org.openscience.cdk.isomorphism.matchers.smarts.*;
-import org.openscience.cdk.smiles.smarts.parser.*;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.util.ArrayList;
-import java.util.List;
+import org.openscience.cdk.isomorphism.matchers.smarts.AliphaticAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.AliphaticSymbolAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.AnyAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.AnyOrderQueryBond;
+import org.openscience.cdk.isomorphism.matchers.smarts.AromaticAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.AromaticOrSingleQueryBond;
+import org.openscience.cdk.isomorphism.matchers.smarts.AromaticQueryBond;
+import org.openscience.cdk.isomorphism.matchers.smarts.AromaticSymbolAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.AtomicNumberAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.ChiralityAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.ExplicitConnectionAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.FormalChargeAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.HybridizationNumberAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.HydrogenAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.ImplicitHCountAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.LogicalOperatorAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.LogicalOperatorBond;
+import org.openscience.cdk.isomorphism.matchers.smarts.MassAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.NonCHHeavyAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.OrderQueryBond;
+import org.openscience.cdk.isomorphism.matchers.smarts.PeriodicGroupNumberAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.RecursiveSmartsAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.RingBond;
+import org.openscience.cdk.isomorphism.matchers.smarts.RingIdentifierAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.RingMembershipAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.SMARTSAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.SMARTSBond;
+import org.openscience.cdk.isomorphism.matchers.smarts.SmallestRingAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.StereoBond;
+import org.openscience.cdk.isomorphism.matchers.smarts.TotalConnectionAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.TotalHCountAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.TotalRingConnectionAtom;
+import org.openscience.cdk.isomorphism.matchers.smarts.TotalValencyAtom;
+import org.openscience.cdk.smiles.smarts.parser.ASTAliphatic;
+import org.openscience.cdk.smiles.smarts.parser.ASTAnyAtom;
+import org.openscience.cdk.smiles.smarts.parser.ASTAromatic;
+import org.openscience.cdk.smiles.smarts.parser.ASTAtom;
+import org.openscience.cdk.smiles.smarts.parser.ASTAtomicMass;
+import org.openscience.cdk.smiles.smarts.parser.ASTAtomicNumber;
+import org.openscience.cdk.smiles.smarts.parser.ASTCharge;
+import org.openscience.cdk.smiles.smarts.parser.ASTChirality;
+import org.openscience.cdk.smiles.smarts.parser.ASTElement;
+import org.openscience.cdk.smiles.smarts.parser.ASTExplicitAtom;
+import org.openscience.cdk.smiles.smarts.parser.ASTExplicitConnectivity;
+import org.openscience.cdk.smiles.smarts.parser.ASTExplicitHighAndBond;
+import org.openscience.cdk.smiles.smarts.parser.ASTExplicitHighAndExpression;
+import org.openscience.cdk.smiles.smarts.parser.ASTGroup;
+import org.openscience.cdk.smiles.smarts.parser.ASTHybrdizationNumber;
+import org.openscience.cdk.smiles.smarts.parser.ASTImplicitHCount;
+import org.openscience.cdk.smiles.smarts.parser.ASTImplicitHighAndBond;
+import org.openscience.cdk.smiles.smarts.parser.ASTImplicitHighAndExpression;
+import org.openscience.cdk.smiles.smarts.parser.ASTLowAndBond;
+import org.openscience.cdk.smiles.smarts.parser.ASTLowAndExpression;
+import org.openscience.cdk.smiles.smarts.parser.ASTNonCHHeavyAtom;
+import org.openscience.cdk.smiles.smarts.parser.ASTNotBond;
+import org.openscience.cdk.smiles.smarts.parser.ASTNotExpression;
+import org.openscience.cdk.smiles.smarts.parser.ASTOrBond;
+import org.openscience.cdk.smiles.smarts.parser.ASTOrExpression;
+import org.openscience.cdk.smiles.smarts.parser.ASTPeriodicGroupNumber;
+import org.openscience.cdk.smiles.smarts.parser.ASTReaction;
+import org.openscience.cdk.smiles.smarts.parser.ASTRecursiveSmartsExpression;
+import org.openscience.cdk.smiles.smarts.parser.ASTRingConnectivity;
+import org.openscience.cdk.smiles.smarts.parser.ASTRingIdentifier;
+import org.openscience.cdk.smiles.smarts.parser.ASTRingMembership;
+import org.openscience.cdk.smiles.smarts.parser.ASTSimpleBond;
+import org.openscience.cdk.smiles.smarts.parser.ASTSmallestRingSize;
+import org.openscience.cdk.smiles.smarts.parser.ASTSmarts;
+import org.openscience.cdk.smiles.smarts.parser.ASTStart;
+import org.openscience.cdk.smiles.smarts.parser.ASTTotalConnectivity;
+import org.openscience.cdk.smiles.smarts.parser.ASTTotalHCount;
+import org.openscience.cdk.smiles.smarts.parser.ASTValence;
+import org.openscience.cdk.smiles.smarts.parser.Node;
+import org.openscience.cdk.smiles.smarts.parser.SMARTSParserConstants;
+import org.openscience.cdk.smiles.smarts.parser.SMARTSParserVisitor;
+import org.openscience.cdk.smiles.smarts.parser.SimpleNode;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * An AST tree visitor. It builds an instance of &lt;code&gt;QueryAtomContainer&lt;/code&gt;
@@ -146,7 +220,8 @@ public class SmartsQueryVisitor implements SMARTSParserVisitor {
 		return atom;
 	}
 
-	private final static LoggingTool logger = new LoggingTool(
+	private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(
 			SmartsQueryVisitor.class);
 	
 	/**</diff>
      <filename>src/main/org/openscience/cdk/smiles/smarts/parser/visitor/SmartsQueryVisitor.java</filename>
    </modified>
    <modified>
      <diff>@@ -30,7 +30,8 @@ import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.math.MathTools;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
 /**
@@ -49,7 +50,8 @@ import org.openscience.cdk.tools.manipulator.BondManipulator;
  */
 public class RandomGenerator {
 	
-	LoggingTool logger = new LoggingTool(RandomGenerator.class);
+	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RandomGenerator.class);
 	
 	private IMolecule proposedStructure = null;
 	private IMolecule molecule = null;</diff>
      <filename>src/main/org/openscience/cdk/structgen/RandomGenerator.java</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,8 @@ import org.openscience.cdk.graph.ConnectivityChecker;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IMolecule;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.SaturationChecker;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
@@ -69,7 +70,8 @@ import org.openscience.cdk.tools.manipulator.BondManipulator;
  */
 public class SingleStructureRandomGenerator {
 	
-	LoggingTool logger = new LoggingTool(SingleStructureRandomGenerator.class);
+	ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(SingleStructureRandomGenerator.class);
 	
 	IAtomContainer atomContainer;
 	SaturationChecker satCheck;</diff>
      <filename>src/main/org/openscience/cdk/structgen/SingleStructureRandomGenerator.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,8 @@ import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.math.MathTools;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
 /**
@@ -49,7 +50,8 @@ import org.openscience.cdk.tools.manipulator.BondManipulator;
  */
 public class VicinitySampler {
 	
-	private final static LoggingTool logger = new LoggingTool(VicinitySampler.class);
+	private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(VicinitySampler.class);
 	
 	int molCounter = 0;
 </diff>
      <filename>src/main/org/openscience/cdk/structgen/VicinitySampler.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.graph.ConnectivityChecker;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.SaturationChecker;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
@@ -63,7 +64,8 @@ import org.openscience.cdk.tools.manipulator.BondManipulator;
  */
 public class PartialFilledStructureMerger {
 	
-	private LoggingTool logger = new LoggingTool(PartialFilledStructureMerger.class);
+	private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(PartialFilledStructureMerger.class);
 	
 	IAtomContainer atomContainer;
 	SaturationChecker satCheck;</diff>
      <filename>src/main/org/openscience/cdk/structgen/stochastic/PartialFilledStructureMerger.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,8 @@ import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IChemFile;
 import org.openscience.cdk.io.CMLReader;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AminoAcidManipulator;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
@@ -49,7 +50,8 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
  */
 public class AminoAcids {
 
-	private static final LoggingTool logger = new LoggingTool(AminoAcids.class);
+	private static final ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(AminoAcids.class);
 	
     /**
      * Creates matrix with info about the bonds in the amino acids.</diff>
      <filename>src/main/org/openscience/cdk/templates/AminoAcids.java</filename>
    </modified>
    <modified>
      <diff>@@ -39,7 +39,8 @@ import org.openscience.cdk.interfaces.IChemSequence;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.MDLReader;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * This class contains methods for generating simple organic molecules.
@@ -49,11 +50,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class MoleculeFactory {
 
-    private static LoggingTool logger = null;
-    
-    static {
-        logger = new LoggingTool(MoleculeFactory.class);
-    }
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MoleculeFactory.class);
     
 	public static Molecule makeAlphaPinene() {
 		Molecule mol = new Molecule();</diff>
      <filename>src/main/org/openscience/cdk/templates/MoleculeFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -46,7 +46,8 @@ import org.openscience.cdk.tools.manipulator.RingSetManipulator;
 
 public class AtomTypeTools {
 	
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(AtomTypeTools.class);
 	HOSECodeGenerator hcg=null;
 	SmilesGenerator sg=null;
 	
@@ -54,7 +55,6 @@ public class AtomTypeTools {
 	 * Constructor for the MMFF94AtomTypeMatcher object.
 	 */
 	public AtomTypeTools() {
-		logger = new LoggingTool(this);
 		hcg = new HOSECodeGenerator();
 	}
 	</diff>
      <filename>src/main/org/openscience/cdk/tools/AtomTypeTools.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,21 +25,25 @@
  */
 package org.openscience.cdk.tools;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
 import org.openscience.cdk.AtomContainer;
 import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.graph.ConnectivityChecker;
 import org.openscience.cdk.graph.PathTools;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IMolecule;
+import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.ringsearch.RingPartitioner;
 import org.openscience.cdk.ringsearch.SSSRFinder;
 import org.openscience.cdk.smiles.SmilesGenerator;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-
 /**
  * Generate ring and Murcko-like fragments.
  * &lt;ul&gt;
@@ -70,7 +74,8 @@ import java.util.Vector;
  **/
 public class GenerateFragments {
 	
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(GenerateFragments.class);
 	
 	private List murckoFragments =null;
 	private List ringFragments=null;
@@ -81,10 +86,6 @@ public class GenerateFragments {
 	private boolean smilesToUpperCase=false;
 	//private IChemObjectBuilder builder;
 	
-	public GenerateFragments() {
-		logger = new LoggingTool(this);
-    }
-	
 	/**
 	 * generates ring fragments from SSSR and RingPartitioner method
 	 * @param molecule</diff>
      <filename>src/main/org/openscience/cdk/tools/GenerateFragments.java</filename>
    </modified>
    <modified>
      <diff>@@ -63,7 +63,8 @@ import org.openscience.cdk.ringsearch.SSSRFinder;
 public class HOSECodeGenerator implements java.io.Serializable
 {
 
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(HOSECodeGenerator.class);
 	
     private static final long serialVersionUID = -4353471818831864513L;
     
@@ -165,8 +166,6 @@ public class HOSECodeGenerator implements java.io.Serializable
 	@TestMethod(&quot;test1Sphere&quot;)
 	public HOSECodeGenerator()
 	{
-		logger = new LoggingTool(this);
-		
 		sphereNodes = new ArrayList&lt;TreeNode&gt;();
 		sphereNodesWithAtoms = new ArrayList&lt;IAtom&gt;();
 		nextSphereNodes = new ArrayList&lt;TreeNode&gt;();</diff>
      <filename>src/main/org/openscience/cdk/tools/HOSECodeGenerator.java</filename>
    </modified>
    <modified>
      <diff>@@ -19,14 +19,14 @@
  */
 package org.openscience.cdk.tools;
 
-import org.apache.log4j.Logger;
-import org.openscience.cdk.annotations.TestClass;
-import org.openscience.cdk.annotations.TestMethod;
-
 import java.io.BufferedReader;
 import java.io.PrintWriter;
 import java.io.StringReader;
 
+import org.apache.log4j.Logger;
+import org.openscience.cdk.annotations.TestClass;
+import org.openscience.cdk.annotations.TestMethod;
+
 /**
  * Useful for logging messages. Often used as a class static variable instantiated like:
  * &lt;pre&gt;
@@ -82,7 +82,7 @@ import java.io.StringReader;
  *
  * &lt;p&gt;The class uses log4j as a backend if available, and System.out otherwise.
  *
- * @cdk.module core
+ * @cdk.module log4j
  * @cdk.githash
  * @cdk.builddepends log4j.jar
  */
@@ -93,7 +93,7 @@ public class LoggingTool implements ILoggingTool {
     private boolean toSTDOUT = false;
 
     private Logger log4jLogger;
-    private LoggingTool logger;
+    private static ILoggingTool logger;
     private String classname;
 
     private int stackLength;  // NOPMD</diff>
      <filename>src/main/org/openscience/cdk/tools/LoggingTool.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,16 +44,10 @@ import org.openscience.cdk.interfaces.ILonePair;
  */
 public class LonePairElectronChecker {
 	
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(LonePairElectronChecker.class);	    
 	private static AtomTypeFactory factory;
 
-	/**
-	 * Constructor of the LonePairElectronChecker object.
-	 */
-	public LonePairElectronChecker() {
-		logger = new LoggingTool(LonePairElectronChecker.class);
-	}
-	
 	private void createAtomTypeFactory(IChemObjectBuilder builder) {
 		if (factory == null) {
 			factory = AtomTypeFactory.getInstance(</diff>
      <filename>src/main/org/openscience/cdk/tools/LonePairElectronChecker.java</filename>
    </modified>
    <modified>
      <diff>@@ -48,7 +48,8 @@ import java.util.Map;
  */
 public class ProteinBuilderTool {
 
-    private static LoggingTool logger = new LoggingTool(ProteinBuilderTool.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ProteinBuilderTool.class);
 
     /**
      * Builds a protein by connecting a new amino acid at the N-terminus of the</diff>
      <filename>src/main/org/openscience/cdk/tools/ProteinBuilderTool.java</filename>
    </modified>
    <modified>
      <diff>@@ -69,11 +69,8 @@ public class SaturationChecker implements IValencyChecker, IDeduceBondOrderTool
 
 	AtomTypeFactory structgenATF;
 
-	private LoggingTool logger;
-
-	public SaturationChecker() {
-		logger = new LoggingTool(this);
-	}
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(SaturationChecker.class);
 
     /**
      * @param builder the ChemObjectBuilder implementation used to construct the AtomType's.</diff>
      <filename>src/main/org/openscience/cdk/tools/SaturationChecker.java</filename>
    </modified>
    <modified>
      <diff>@@ -54,7 +54,8 @@ public class SmilesValencyChecker implements IValencyChecker, IDeduceBondOrderTo
 
 	private String atomTypeList = null;
 	protected AtomTypeFactory structgenATF;
-	protected LoggingTool logger;
+	protected static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(SmilesValencyChecker.class);
 
 	public SmilesValencyChecker() {
         this(&quot;org/openscience/cdk/dict/data/cdk-atom-types.owl&quot;);
@@ -62,7 +63,6 @@ public class SmilesValencyChecker implements IValencyChecker, IDeduceBondOrderTo
 
 	public SmilesValencyChecker(String atomTypeList) {
         this.atomTypeList = atomTypeList;
-        logger = new LoggingTool(this);
         logger.info(&quot;Using configuration file: &quot;, atomTypeList);
     }
 </diff>
      <filename>src/main/org/openscience/cdk/tools/SmilesValencyChecker.java</filename>
    </modified>
    <modified>
      <diff>@@ -79,7 +79,8 @@ import org.openscience.cdk.reaction.type.parameters.SetReactionCenter;
 @TestClass(&quot;org.openscience.cdk.tools.StructureResonanceGeneratorTest&quot;)
 public class StructureResonanceGenerator {
 	
-	private LoggingTool logger = new LoggingTool(StructureResonanceGenerator.class);
+	private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(StructureResonanceGenerator.class);
 	private List&lt;IReactionProcess&gt; reactionsList = new ArrayList&lt;IReactionProcess&gt;();
 	/**Generate resonance structure without looking at the symmetry*/
 	private boolean lookingSymmetry;</diff>
      <filename>src/main/org/openscience/cdk/tools/StructureResonanceGenerator.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,17 +28,17 @@
  */
 package org.openscience.cdk.tools.manipulator;
 
+import java.io.IOException;
+import java.util.Comparator;
+
 import org.openscience.cdk.annotations.TestClass;
 import org.openscience.cdk.annotations.TestMethod;
 import org.openscience.cdk.config.IsotopeFactory;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IAtomContainer;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.IOException;
-import java.util.Comparator;
-import java.util.Iterator;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * &lt;p&gt;Compares two IAtomContainers for order with the following criteria with decreasing priority:&lt;/p&gt;
@@ -60,7 +60,8 @@ import java.util.Iterator;
 public class AtomContainerComparator implements Comparator {
   
   /** Configure LoggingTool */
-  private LoggingTool logger = new LoggingTool(AtomContainerComparator.class);
+  private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(AtomContainerComparator.class);
   
   /** Creates a new instance of AtomContainerComparator */
   public AtomContainerComparator() {</diff>
      <filename>src/main/org/openscience/cdk/tools/manipulator/AtomContainerComparator.java</filename>
    </modified>
    <modified>
      <diff>@@ -30,18 +30,19 @@ import org.openscience.cdk.Atom;
 import org.openscience.cdk.AtomContainer;
 import org.openscience.cdk.Bond;
 import org.openscience.cdk.CDKConstants;
-import org.openscience.cdk.interfaces.IAtom;
-import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IBond;
-import org.openscience.cdk.interfaces.IElement;
-import org.openscience.cdk.interfaces.IIsotope;
-import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.PseudoAtom;
 import org.openscience.cdk.Reaction;
 import org.openscience.cdk.config.AtomTypeFactory;
 import org.openscience.cdk.config.IsotopeFactory;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomType;
+import org.openscience.cdk.interfaces.IElement;
+import org.openscience.cdk.interfaces.IIsotope;
+import org.openscience.cdk.interfaces.IMoleculeSet;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 
 /**
@@ -53,11 +54,8 @@ import org.openscience.cdk.tools.manipulator.BondManipulator;
  */ 
 public class BasicValidator extends AbstractValidator {
 
-    private static LoggingTool logger;
-    
-    static {
-        logger = new LoggingTool(BasicValidator.class);
-    }
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(BasicValidator.class);
     
     public BasicValidator() {
     }</diff>
      <filename>src/main/org/openscience/cdk/validate/BasicValidator.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,9 +27,10 @@ package org.openscience.cdk.validate;
 import java.util.Iterator;
 import java.util.Map;
 
-import org.openscience.cdk.interfaces.IChemObject;
 import org.openscience.cdk.dict.DictionaryDatabase;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.interfaces.IChemObject;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Validates the existence of references to dictionaries.
@@ -40,11 +41,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */ 
 public class DictionaryValidator extends AbstractValidator {
 
-    private static LoggingTool logger;
-    
-    static {
-        logger = new LoggingTool(DictionaryValidator.class);
-    }
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(DictionaryValidator.class);
     
     private DictionaryDatabase db;
     </diff>
      <filename>src/main/org/openscience/cdk/validate/DictionaryValidator.java</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.interfaces.IReactionSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Engine that performs the validation by traversing the IChemObject
@@ -58,11 +59,11 @@ import org.openscience.cdk.tools.LoggingTool;
 public class ValidatorEngine implements IValidator {
     
     private Map&lt;String,IValidator&gt; validators;
-    private LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ValidatorEngine.class);
     
     public ValidatorEngine() {
         validators = new Hashtable&lt;String,IValidator&gt;();
-        logger = new LoggingTool(this);
     }
     
     public void addValidator(IValidator validator) {</diff>
      <filename>src/main/org/openscience/cdk/validate/ValidatorEngine.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,6 @@ import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IAtomType;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.tools.CDKHydrogenAdder;
-import org.openscience.cdk.tools.LoggingTool;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 
@@ -46,10 +45,6 @@ import java.util.Iterator;
  */
 public class CDKTestCase {
 
-    static {
-        LoggingTool.configureLog4j();
-    }
-
     /**
      * Determines if slow JUnit tests are to be run. You can set this
      * from the command line when running Ant: </diff>
      <filename>src/test/org/openscience/cdk/CDKTestCase.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import org.openscience.cdk.io.MDLV2000Reader;
 import org.openscience.cdk.nonotify.NNMolecule;
 import org.openscience.cdk.nonotify.NoNotificationChemObjectBuilder;
 import org.openscience.cdk.tools.AtomTypeTools;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 
 /**
@@ -50,14 +51,13 @@ import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
  */
 public class MM2AtomTypeMatcherTest extends AbstractAtomTypeTest {
 
-	private static LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(MM2AtomTypeMatcherTest.class);
 	private static IMolecule testMolecule = null;
 	
     private static Map&lt;String, Integer&gt; testedAtomTypes = new HashMap&lt;String, Integer&gt;();
 
     @BeforeClass public static void setUp() throws Exception {
-    	logger = new LoggingTool(MM2AtomTypeMatcherTest.class);
-    	
     	if (testMolecule == null) {
     		// read the test file and percieve atom types
     		AtomTypeTools att=new AtomTypeTools();</diff>
      <filename>src/test/org/openscience/cdk/atomtype/MM2AtomTypeMatcherTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.io.MDLV2000Reader;
 import org.openscience.cdk.nonotify.NNMolecule;
 import org.openscience.cdk.nonotify.NoNotificationChemObjectBuilder;
 import org.openscience.cdk.tools.AtomTypeTools;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 
 /**
@@ -55,7 +56,8 @@ import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
  */
 public class MMFF94AtomTypeMatcherTest extends AbstractAtomTypeTest {
 
-	private static LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(MMFF94AtomTypeMatcherTest.class);
 	private final IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
 	
 	private static IMolecule testMolecule = null;
@@ -63,8 +65,6 @@ public class MMFF94AtomTypeMatcherTest extends AbstractAtomTypeTest {
     private static Map&lt;String, Integer&gt; testedAtomTypes = new HashMap&lt;String, Integer&gt;();
 
 	@BeforeClass public static void setUpTestMolecule() throws Exception {
-    	logger = new LoggingTool(MMFF94AtomTypeMatcherTest.class);
-    
     	if (testMolecule == null) {
         	//logger.debug(&quot;**** START ATOMTYPE TEST ******&quot;);
         	AtomTypeTools att=new AtomTypeTools();</diff>
      <filename>src/test/org/openscience/cdk/atomtype/MMFF94AtomTypeMatcherTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -32,14 +32,15 @@ import org.junit.Assert;
 import org.junit.Test;
 import org.openscience.cdk.nonotify.NoNotificationChemObjectBuilder;
 import org.openscience.cdk.smiles.SmilesParser;
-import org.openscience.cdk.tools.LoggingTool;
-
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 /**
  * @cdk.module test-fingerprint
  */
 public class EStateFingerprinterTest extends AbstractFingerprinterTest {
 
-	private static LoggingTool logger = new LoggingTool(EStateFingerprinterTest.class);
+	private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(EStateFingerprinterTest.class);
 
 	public IFingerprinter getFingerprinter() {
 		return new EStateFingerprinter();</diff>
      <filename>src/test/org/openscience/cdk/fingerprint/EStateFingerprinterTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,8 @@ import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.io.MDLRXNV2000Reader;
 import org.openscience.cdk.io.IChemObjectReader.Mode;
 import org.openscience.cdk.templates.MoleculeFactory;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-standard
@@ -48,7 +49,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class FingerprinterTest extends AbstractFingerprinterTest {
 
 	boolean standAlone = false;
-	private static LoggingTool logger = new LoggingTool(FingerprinterTest.class);
+	private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(FingerprinterTest.class);
 
 	public IFingerprinter getFingerprinter() {
 	    return new Fingerprinter();</diff>
      <filename>src/test/org/openscience/cdk/fingerprint/FingerprinterTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -30,6 +30,7 @@ import java.util.BitSet;
 
 import org.junit.Assert;
 import org.junit.Test;
+import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtomContainer;
@@ -38,14 +39,16 @@ import org.openscience.cdk.io.MDLV2000Reader;
 import org.openscience.cdk.isomorphism.UniversalIsomorphismTester;
 import org.openscience.cdk.nonotify.NoNotificationChemObjectBuilder;
 import org.openscience.cdk.smiles.SmilesParser;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-standard
  */
 public class GraphOnlyFingerprinterTest extends AbstractFingerprinterTest {
 
-	private static LoggingTool logger = new LoggingTool(FingerprinterTest.class);
+	private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(FingerprinterTest.class);
 
 	public IFingerprinter getFingerprinter() {
 		return new GraphOnlyFingerprinter();</diff>
      <filename>src/test/org/openscience/cdk/fingerprint/GraphOnlyFingerprinterTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -34,7 +34,8 @@ import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.nonotify.NoNotificationChemObjectBuilder;
 import org.openscience.cdk.smiles.SmilesParser;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
 /**
@@ -42,7 +43,8 @@ import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
  */
 public class MACCSFingerprinterTest extends AbstractFingerprinterTest {
 
-    private static LoggingTool logger = new LoggingTool(MACCSFingerprinterTest.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MACCSFingerprinterTest.class);
 
     public IFingerprinter getFingerprinter() {
         return new MACCSFingerprinter();</diff>
      <filename>src/test/org/openscience/cdk/fingerprint/MACCSFingerprinterTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -26,6 +26,8 @@
  */
 package org.openscience.cdk.fingerprint;
 
+import java.util.BitSet;
+
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -38,18 +40,14 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.nonotify.NoNotificationChemObjectBuilder;
 import org.openscience.cdk.smiles.SmilesParser;
 import org.openscience.cdk.tools.CDKHydrogenAdder;
-import org.openscience.cdk.tools.LoggingTool;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
-import java.util.BitSet;
-
 /**
  * @cdk.module test-fingerprint
  */
 public class PubchemFingerprinterTest extends AbstractFingerprinterTest {
 
     SmilesParser parser;
-    private static LoggingTool logger = new LoggingTool(PubchemFingerprinterTest.class);
 
     public IFingerprinter getFingerprinter() {
         return new PubchemFingerprinter();</diff>
      <filename>src/test/org/openscience/cdk/fingerprint/PubchemFingerprinterTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -48,7 +48,8 @@ import org.openscience.cdk.io.MDLReader;
 import org.openscience.cdk.io.MDLV2000Reader;
 import org.openscience.cdk.nonotify.NoNotificationChemObjectBuilder;
 import org.openscience.cdk.smiles.SmilesParser;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.LonePairElectronChecker;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 
@@ -62,11 +63,11 @@ public class ConjugatedPiSystemsDetectorTest extends CDKTestCase
 	private static IChemObjectBuilder builder;
 	private static LonePairElectronChecker lpcheck;
 	
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ConjugatedPiSystemsDetectorTest.class);
 
     @BeforeClass
     public static void setup() {
-        logger = new LoggingTool(ConjugatedPiSystemsDetectorTest.class);
         builder = NoNotificationChemObjectBuilder.getInstance();
         lpcheck = new LonePairElectronChecker();
     }</diff>
      <filename>src/test/org/openscience/cdk/graph/invariant/ConjugatedPiSystemsDetectorTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,8 @@ import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.layout.StructureDiagramGenerator;
 import org.openscience.cdk.smiles.SmilesParser;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  *@author         steinbeck
@@ -37,7 +38,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class SmilesParserTest {
 	
-	private LoggingTool logger;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(SmilesParserTest.class);
 	boolean standAlone = false;
 	private SmilesParser sp;
 
@@ -48,7 +50,6 @@ public class SmilesParserTest {
 	 */
 	public SmilesParserTest(String name) {
 		sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());
-		logger = new LoggingTool(this);
 	}
 
 	public void testSMILES() {</diff>
      <filename>src/test/org/openscience/cdk/gui/smiles/SmilesParserTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,8 @@ import org.openscience.cdk.interfaces.IChemFile;
 import org.openscience.cdk.interfaces.IChemModel;
 import org.openscience.cdk.interfaces.IChemSequence;
 import org.openscience.cdk.interfaces.IMoleculeSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading CTX files using a test file.
@@ -51,10 +52,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class CTXReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CTXReaderTest.class);
 
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(CTXReaderTest.class);
         setSimpleChemObjectReader(new CTXReader(), &quot;data/ctx/methanol_with_descriptors.ctx&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/CTXReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,8 @@ import org.junit.Test;
 import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.io.formats.IChemFormat;
 import org.openscience.cdk.io.formats.IResourceFormat;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Tests whether all Reader and Writer classes can be instantiated.
@@ -48,7 +49,8 @@ public class ChemObjectIOInstantionTests extends CDKTestCase {
     
     private final static String IO_FORMATS_LIST = &quot;io-formats.set&quot;;
 
-    private static LoggingTool logger = new LoggingTool(ChemObjectIOInstantionTests.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ChemObjectIOInstantionTests.class);
 
     private static List&lt;IChemFormat&gt; formats = null;
 </diff>
      <filename>src/test/org/openscience/cdk/io/ChemObjectIOInstantionTests.java</filename>
    </modified>
    <modified>
      <diff>@@ -37,7 +37,8 @@ import org.junit.Test;
 import org.openscience.cdk.AtomContainer;
 import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.ChemObject;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading MDL mol files using one test file.
@@ -48,10 +49,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class CrystClustReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CrystClustReaderTest.class);
         
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(CrystClustReaderTest.class);
         setSimpleChemObjectReader(new CrystClustReader(), &quot;data/crystclust/estron.crystclust&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/CrystClustReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import org.openscience.cdk.ChemObject;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IChemFile;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
 /**
@@ -50,10 +51,10 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
  */
 public class HINReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(HINReaderTest.class);
     
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(HINReaderTest.class);
         setSimpleChemObjectReader(new HINReader(), &quot;data/hin/benzene.hin&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/HINReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -34,7 +34,8 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.ChemObject;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading INChI plain text files.
@@ -46,10 +47,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class INChIPlainTextReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(INChIPlainTextReaderTest.class);
 
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(INChIPlainTextReaderTest.class);
         setSimpleChemObjectReader(new INChIPlainTextReader(), &quot;data/inchi/guanine.inchi&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/INChIPlainTextReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,8 @@ import org.junit.Test;
 import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.ChemObject;
 import org.openscience.cdk.exception.CDKException;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading INChI files using one test file.
@@ -47,10 +48,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class INChIReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(INChIReaderTest.class);
 
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(INChIReaderTest.class);
         setSimpleChemObjectReader(new INChIReader(), &quot;data/inchi/guanine.inchi.xml&quot;);
     }
     </diff>
      <filename>src/test/org/openscience/cdk/io/INChIReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -48,7 +48,8 @@ import org.openscience.cdk.nonotify.NNChemFile;
 import org.openscience.cdk.nonotify.NNChemModel;
 import org.openscience.cdk.nonotify.NNReaction;
 import org.openscience.cdk.nonotify.NNReactionSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading MDL RXN files using one test file.
@@ -59,10 +60,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class MDLRXNReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLRXNReaderTest.class);
 
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(MDLRXNReaderTest.class);
         setSimpleChemObjectReader(new MDLRXNReader(), &quot;data/mdl/reaction-1.rxn&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/MDLRXNReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,8 @@ import org.openscience.cdk.Reaction;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.io.IChemObjectReader.Mode;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading MDL RXN files using one test file.
@@ -46,10 +47,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class MDLRXNV2000ReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLRXNV2000ReaderTest.class);
 
     @BeforeClass public static void setup() throws Exception {
-        logger = new LoggingTool(MDLRXNV2000ReaderTest.class);
         setSimpleChemObjectReader(new MDLRXNV2000Reader(), &quot;data/mdl/0024.stg02.rxn&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/MDLRXNV2000ReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import org.openscience.cdk.Reaction;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.io.IChemObjectReader.Mode;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading MDL RXN files using one test file.
@@ -49,10 +50,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class MDLRXNV3000ReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLRXNV3000ReaderTest.class);
 
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(MDLRXNV3000ReaderTest.class);
         setSimpleChemObjectReader(new MDLRXNV3000Reader(), &quot;data/mdl/reaction_v3.rxn&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/MDLRXNV3000ReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,8 @@ import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.io.IChemObjectReader.Mode;
 import org.openscience.cdk.nonotify.NNMolecule;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
 /**
@@ -55,10 +56,10 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
  */
 public class MDLReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLReaderTest.class);
 
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(MDLReaderTest.class);
         setSimpleChemObjectReader(new MDLReader(), &quot;data/mdl/Strychnine_nichtOK.mol&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/MDLReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -53,7 +53,8 @@ import org.openscience.cdk.interfaces.IPseudoAtom;
 import org.openscience.cdk.io.IChemObjectReader.Mode;
 import org.openscience.cdk.io.listener.PropertiesListener;
 import org.openscience.cdk.nonotify.NNMolecule;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
@@ -68,10 +69,10 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
  */
 public class MDLV2000ReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLV2000ReaderTest.class);
 
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(MDLV2000ReaderTest.class);
         setSimpleChemObjectReader(new MDLV2000Reader(), &quot;data/mdl/bug682233.mol&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/MDLV2000ReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,8 @@ import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtom;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.nonotify.NNMolecule;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading MDL V3000 mol files using one test file.
@@ -47,10 +48,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class MDLV3000ReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDLV3000ReaderTest.class);
 
     @BeforeClass public static void setup() throws Exception {
-        logger = new LoggingTool(MDLV3000ReaderTest.class);
         setSimpleChemObjectReader(new MDLV3000Reader(), &quot;data/mdl/molV3000.mol&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/MDLV3000ReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -50,7 +50,8 @@ import org.openscience.cdk.interfaces.IChemFile;
 import org.openscience.cdk.interfaces.IChemModel;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.nonotify.NoNotificationChemObjectBuilder;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemModelManipulator;
 
 /**
@@ -62,10 +63,10 @@ import org.openscience.cdk.tools.manipulator.ChemModelManipulator;
  */
 public class Mol2ReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(Mol2ReaderTest.class);
 
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(Mol2ReaderTest.class);
         setSimpleChemObjectReader(new Mol2Reader(), &quot;data/mol2/fromWebsite.mol2&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/Mol2ReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -34,7 +34,8 @@ import org.openscience.cdk.CDKConstants;
 import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.interfaces.IChemFile;
 import org.openscience.cdk.interfaces.IMolecule;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
 /**
@@ -42,11 +43,10 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
  */
 public class PCCompoundASNReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(PCCompoundASNReaderTest.class);
 
     @BeforeClass public static void setup() throws Exception {
-        logger = new LoggingTool(PCCompoundASNReaderTest.class);
-        System.out.println(&quot;Foo&quot;);
         setSimpleChemObjectReader(new PCCompoundASNReader(), &quot;data/asn/pubchem/cid1.asn&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/PCCompoundASNReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -34,17 +34,18 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.interfaces.IMolecule;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-io
  */
 public class PCCompoundXMLReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(PCCompoundXMLReaderTest.class);
 
     @BeforeClass public static void setup() throws Exception {
-        logger = new LoggingTool(PCCompoundXMLReaderTest.class);
         setSimpleChemObjectReader(new PCCompoundXMLReader(), &quot;data/asn/pubchem/cid1145.xml&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/PCCompoundXMLReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -32,17 +32,18 @@ import org.junit.Test;
 import org.openscience.cdk.Molecule;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IPseudoAtom;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-io
  */
 public class PCSubstanceXMLReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(PCSubstanceXMLReaderTest.class);
 
     @BeforeClass public static void setup() throws Exception {
-        logger = new LoggingTool(Mol2ReaderTest.class);
         setSimpleChemObjectReader(new Mol2Reader(), &quot;data/asn/pubchem/sid577309.xml&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/PCSubstanceXMLReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -34,7 +34,8 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.MoleculeSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading MDL mol files using one test file.
@@ -45,10 +46,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class SMILESReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(SMILESReaderTest.class);
 
     @BeforeClass public static void setup() throws Exception {
-        logger = new LoggingTool(SMILESReaderTest.class);
         setSimpleChemObjectReader(new SMILESReader(), &quot;data/smiles/smiles.smi&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/SMILESReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -35,17 +35,18 @@ import org.junit.Test;
 import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.Crystal;
 import org.openscience.cdk.geometry.CrystalGeometryTools;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-io
  */
 public class ShelXReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ShelXReaderTest.class);
 
     @BeforeClass public static void setup() throws Exception {
-        logger = new LoggingTool(ShelXReaderTest.class);
         setSimpleChemObjectReader(new ShelXReader(), &quot;data/shelx/frame_1.res&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/ShelXReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,17 +33,18 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openscience.cdk.ChemFile;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-extra
  */
 public class VASPReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(VASPReaderTest.class);
 
     @BeforeClass public static void setup() throws Exception {
-        logger = new LoggingTool(VASPReaderTest.class);
         setSimpleChemObjectReader(new VASPReader(), &quot;data/vasp/LiMoS2_optimisation_ISIF3.vasp&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/VASPReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,8 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.ChemObject;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading XYZ files using a test file.
@@ -42,10 +43,10 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class XYZReaderTest extends SimpleChemObjectReaderTest {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(XYZReaderTest.class);
 
     @BeforeClass public static void setup() throws Exception {
-        logger = new LoggingTool(XYZReaderTest.class);
         setSimpleChemObjectReader(new XYZReader(), &quot;data/xyz/viagra.xyz&quot;);
     }
 </diff>
      <filename>src/test/org/openscience/cdk/io/XYZReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,6 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openscience.cdk.ChemFile;
-import org.openscience.cdk.tools.LoggingTool;
 
 /**
  * @cdk.module test-io</diff>
      <filename>src/test/org/openscience/cdk/io/ZMatrixReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -56,7 +56,8 @@ import org.openscience.cdk.io.ISimpleChemObjectReader;
 import org.openscience.cdk.io.PDBReader;
 import org.openscience.cdk.nonotify.NNChemFile;
 import org.openscience.cdk.protein.data.PDBPolymer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
 /**
@@ -68,7 +69,8 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
  */
 public class CML2Test extends CDKTestCase {
 
-    private static LoggingTool logger = new LoggingTool(CML2Test.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CML2Test.class);
 
     @Test public void testFile3() throws Exception {
         String filename = &quot;data/cml/3.cml&quot;;</diff>
      <filename>src/test/org/openscience/cdk/io/cml/CML2Test.java</filename>
    </modified>
    <modified>
      <diff>@@ -36,9 +36,9 @@ import org.junit.Assert;
 import org.junit.Test;
 import org.openscience.cdk.Atom;
 import org.openscience.cdk.CDKConstants;
+import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.Molecule;
-import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.ReactionScheme;
 import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector;
 import org.openscience.cdk.config.Elements;
@@ -66,7 +66,8 @@ import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.descriptors.molecular.WeightDescriptor;
 import org.openscience.cdk.templates.MoleculeFactory;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading CML 2 files using a few test files
@@ -77,7 +78,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class CML2WriterTest extends CDKTestCase {
 
-    private static LoggingTool logger = new LoggingTool(CML2WriterTest.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CML2WriterTest.class);
 
     @Test public void testCMLWriterBenzene() throws Exception {
 		StringWriter writer = new StringWriter();</diff>
      <filename>src/test/org/openscience/cdk/io/cml/CML2WriterTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -58,7 +58,8 @@ import org.openscience.cdk.qsar.DescriptorValue;
 import org.openscience.cdk.qsar.IMolecularDescriptor;
 import org.openscience.cdk.qsar.descriptors.molecular.WeightDescriptor;
 import org.openscience.cdk.templates.MoleculeFactory;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.BondManipulator;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
@@ -72,11 +73,11 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
  */
 public class CMLRoundTripTest extends CDKTestCase {
 
-    private static LoggingTool logger;
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CMLRoundTripTest.class);
     private static Convertor convertor;
 
     @BeforeClass public static void setup() {
-        logger = new LoggingTool(CMLRoundTripTest.class);
         convertor = new Convertor(false, &quot;&quot;);
         convertor.registerCustomizer(new QSARCustomizer());
     }</diff>
      <filename>src/test/org/openscience/cdk/io/cml/CMLRoundTripTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -39,7 +39,8 @@ import org.openscience.cdk.interfaces.IReaction;
 import org.openscience.cdk.interfaces.IReactionSet;
 import org.openscience.cdk.io.CMLReader;
 import org.openscience.cdk.libio.cml.Convertor;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Helper tool for round tripping CDK classes via CML.
@@ -50,7 +51,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class CMLRoundTripTool extends CDKTestCase {
 
-    private static LoggingTool logger = new LoggingTool(CMLRoundTripTool.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(CMLRoundTripTool.class);
     private static Convertor convertor = new Convertor(true, null);
 
     /**</diff>
      <filename>src/test/org/openscience/cdk/io/cml/CMLRoundTripTool.java</filename>
    </modified>
    <modified>
      <diff>@@ -39,7 +39,8 @@ import org.openscience.cdk.interfaces.IChemSequence;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.CMLReader;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for reading CML files using a few test files
@@ -50,7 +51,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class JChemPaintTest extends CDKTestCase {
 
-    private LoggingTool logger = new org.openscience.cdk.tools.LoggingTool(this);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(JChemPaintTest.class);
 
     /**
      * This one tests a CML2 file.</diff>
      <filename>src/test/org/openscience/cdk/io/cml/JChemPaintTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -42,7 +42,8 @@ import org.openscience.cdk.interfaces.ICrystal;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
 import org.openscience.cdk.io.CMLReader;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for reading CML files using a few test files
@@ -53,7 +54,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class JmolTest extends CDKTestCase {
 
-    private LoggingTool logger = new LoggingTool(JmolTest.class);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(JmolTest.class);
 
     /**
      * Now come the actual tests...</diff>
      <filename>src/test/org/openscience/cdk/io/cml/JmolTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,8 @@ import org.openscience.cdk.interfaces.IChemModel;
 import org.openscience.cdk.interfaces.IChemSequence;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.io.CMLReader;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for reading CML files using a few test files
@@ -49,7 +50,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class JumboTest extends CDKTestCase {
 
-    private LoggingTool logger = new LoggingTool(this);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(JumboTest.class);
 
     /**
      * Now come the actual tests...</diff>
      <filename>src/test/org/openscience/cdk/io/cml/JumboTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,14 @@
 package org.openscience.cdk.io.iterator;
 
+import java.io.InputStream;
+
 import org.junit.Assert;
-import org.junit.BeforeClass;
 import org.junit.Test;
+import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.ConformerContainer;
 import org.openscience.cdk.DefaultChemObjectBuilder;
-import org.openscience.cdk.CDKTestCase;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.InputStream;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading MDL mol files using one test file.
@@ -19,12 +19,8 @@ import java.io.InputStream;
  */
 public class IteratingMDLConformerReaderTest extends CDKTestCase {
 
-    private static LoggingTool logger;
-
-    @BeforeClass
-    public static void setup() {
-        logger = new LoggingTool(IteratingMDLConformerReaderTest.class);
-    }
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IteratingMDLConformerReaderTest.class);
 
     @Test
     public void testSDF() throws Exception {</diff>
      <filename>src/test/org/openscience/cdk/io/iterator/IteratingMDLConformerReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ import org.openscience.cdk.io.formats.MDLV2000Format;
 import org.openscience.cdk.io.listener.IChemObjectIOListener;
 import org.openscience.cdk.io.listener.PropertiesListener;
 import org.openscience.cdk.io.setting.IOSetting;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading MDL mol files using one test file.
@@ -53,7 +54,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class IteratingMDLReaderTest extends CDKTestCase {
 
-    private LoggingTool logger = new LoggingTool(this);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IteratingMDLReaderTest.class);
 
     @Test public void testSDF() throws Exception {
         String filename = &quot;data/mdl/test2.sdf&quot;;</diff>
      <filename>src/test/org/openscience/cdk/io/iterator/IteratingMDLReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,17 +28,19 @@ import java.io.InputStream;
 
 import org.junit.Assert;
 import org.junit.Test;
+import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.Molecule;
-import org.openscience.cdk.CDKTestCase;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-io
  */
 public class IteratingPCCompoundASNReaderTest extends CDKTestCase {
 
-    private LoggingTool logger = new LoggingTool(this);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IteratingPCCompoundASNReaderTest.class);
 
     @Test public void testList() throws Exception {
         String filename = &quot;data/asn/pubchem/list.asn&quot;;</diff>
      <filename>src/test/org/openscience/cdk/io/iterator/IteratingPCCompoundASNReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -29,18 +29,20 @@ import java.io.InputStreamReader;
 
 import org.junit.Assert;
 import org.junit.Test;
-import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.CDKTestCase;
+import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IMoleculeSet;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-io
  */
 public class IteratingPCCompoundXMLReaderTest extends CDKTestCase {
 
-    private LoggingTool logger = new LoggingTool(this);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IteratingPCCompoundXMLReaderTest.class);
 
     @Test public void testList() throws Exception {
         String filename = &quot;data/asn/pubchem/aceticAcids38.xml&quot;;</diff>
      <filename>src/test/org/openscience/cdk/io/iterator/IteratingPCCompoundXMLReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -29,11 +29,12 @@ import java.io.InputStreamReader;
 
 import org.junit.Assert;
 import org.junit.Test;
-import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.CDKTestCase;
+import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemModel;
 import org.openscience.cdk.interfaces.IChemSequence;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemModelManipulator;
 
 /**
@@ -41,7 +42,8 @@ import org.openscience.cdk.tools.manipulator.ChemModelManipulator;
  */
 public class IteratingPCSubstancesXMLReaderTest extends CDKTestCase {
 
-    private LoggingTool logger = new LoggingTool(this);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IteratingPCSubstancesXMLReaderTest.class);
 
     @Test public void testTaxols() throws Exception {
         String filename = &quot;data/asn/pubchem/taxols.xml&quot;;</diff>
      <filename>src/test/org/openscience/cdk/io/iterator/IteratingPCSubstancesXMLReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -27,18 +27,18 @@
  *  */
 package org.openscience.cdk.io.iterator;
 
+import java.io.InputStream;
+
 import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Test;
 import org.openscience.cdk.CDKConstants;
-import org.openscience.cdk.Molecule;
 import org.openscience.cdk.CDKTestCase;
+import org.openscience.cdk.Molecule;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.SMILESFormat;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.InputStream;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * TestCase for the reading SMILES mol files using one test file.
@@ -48,12 +48,8 @@ import java.io.InputStream;
  */
 public class IteratingSMILESReaderTest extends CDKTestCase {
 
-    private static LoggingTool logger;
-
-    @Before
-    public void setup() {
-       logger = new LoggingTool(IteratingSMILESReaderTest.class);
-    }
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(IteratingSMILESReaderTest.class);
 
     @Test
     public void testSMILESFileWithNames() throws Exception {</diff>
      <filename>src/test/org/openscience/cdk/io/iterator/IteratingSMILESReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,11 +28,12 @@ import java.io.File;
 
 import org.junit.Assert;
 import org.junit.Test;
-import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.CDKTestCase;
+import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.interfaces.IChemObject;
 import org.openscience.cdk.interfaces.IMolecule;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * Test for {@link RandomAccessSDFReader}.
@@ -42,7 +43,8 @@ import org.openscience.cdk.tools.LoggingTool;
  */
 public class RandomAccessTest extends CDKTestCase {
 
-    private LoggingTool logger = new LoggingTool(this);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(RandomAccessTest.class);
 
     @Test public void test() throws Exception {
         String filename = &quot;src/test/data/mdl/test2.sdf&quot;;</diff>
      <filename>src/test/org/openscience/cdk/io/random/RandomAccessTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -31,14 +31,15 @@ import org.junit.Assert;
 import org.junit.Test;
 import org.openscience.cdk.Atom;
 import org.openscience.cdk.Bond;
+import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.ChemObject;
 import org.openscience.cdk.Molecule;
-import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.geometry.GeometryTools;
 import org.openscience.cdk.io.MDLReader;
 import org.openscience.cdk.io.IChemObjectReader.Mode;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-sdg
@@ -46,7 +47,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class HydrogenPlacerTest extends CDKTestCase {
     
     public boolean standAlone = false;
-    private LoggingTool logger = new LoggingTool(this);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(HydrogenPlacerTest.class);
     
     /**
      * @cdk.bug 933572</diff>
      <filename>src/test/org/openscience/cdk/layout/HydrogenPlacerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,16 +28,16 @@ import java.io.InputStream;
 import java.util.Vector;
 
 import org.junit.Assert;
-import org.junit.BeforeClass;
 import org.junit.Test;
-import org.openscience.cdk.Molecule;
 import org.openscience.cdk.CDKTestCase;
+import org.openscience.cdk.Molecule;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IChemFile;
 import org.openscience.cdk.io.CMLReader;
 import org.openscience.cdk.nonotify.NNChemFile;
 import org.openscience.cdk.smiles.SmilesParser;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
 /**
@@ -55,17 +55,11 @@ public class OverlapResolverTest extends CDKTestCase {
 	 *  Description of the Field
 	 */
 	public boolean standAlone = false;
-	private static LoggingTool logger = null;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(OverlapResolverTest.class);
 	StructureDiagramGenerator sdg = null;
 
 	/**
-	 *  The JUnit setup method
-	 */
-	@BeforeClass public static void setUp() throws Exception {
-		logger = new LoggingTool(OverlapResolverTest.class);
-	}
-
-	/**
 	 *  A unit test for JUnit
 	 *
 	 *@exception  Exception  Description of the Exception</diff>
      <filename>src/test/org/openscience/cdk/layout/OverlapResolverTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -25,8 +25,8 @@ import java.io.InputStream;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.CDKTestCase;
+import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.interfaces.IAtomContainerSet;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IMolecule;
@@ -35,7 +35,8 @@ import org.openscience.cdk.io.MDLReader;
 import org.openscience.cdk.io.IChemObjectReader.Mode;
 import org.openscience.cdk.smiles.SmilesParser;
 import org.openscience.cdk.templates.MoleculeFactory;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module  test-sdg
@@ -46,7 +47,8 @@ import org.openscience.cdk.tools.LoggingTool;
 public class TemplateHandlerTest extends CDKTestCase {
 
 	public boolean standAlone = false;
-	private static LoggingTool logger = null;
+	private static ILoggingTool logger =
+	    LoggingToolFactory.createLoggingTool(TemplateHandlerTest.class);
 
 	private static SmilesParser sp = null;
 	private static StructureDiagramGenerator sdg = null;
@@ -55,7 +57,6 @@ public class TemplateHandlerTest extends CDKTestCase {
 	 *  The JUnit setup method
 	 */
 	@BeforeClass public static void setUp() throws Exception {
-		logger = new LoggingTool(TemplateHandlerTest.class);
 		sdg = new StructureDiagramGenerator();
 		sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());
 	}</diff>
      <filename>src/test/org/openscience/cdk/layout/TemplateHandlerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -33,8 +33,8 @@ import org.junit.Assert;
 import org.junit.Test;
 import org.openscience.cdk.Atom;
 import org.openscience.cdk.AtomContainer;
-import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.CDKTestCase;
+import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.interfaces.IBond;
 import org.openscience.cdk.interfaces.IChemFile;
 import org.openscience.cdk.interfaces.IMolecule;
@@ -42,7 +42,8 @@ import org.openscience.cdk.io.CMLReader;
 import org.openscience.cdk.io.CMLWriter;
 import org.openscience.cdk.io.cml.MDMoleculeConvention;
 import org.openscience.cdk.libio.cml.MDMoleculeCustomizer;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
 /**
@@ -50,7 +51,8 @@ import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
  */
 public class MDMoleculeTest extends CDKTestCase {
 
-    private LoggingTool logger = new LoggingTool(this);
+    private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(MDMoleculeTest.class);
 
     /**
      * Test an MDMolecule with residues and charge groups</diff>
      <filename>src/test/org/openscience/cdk/libio/md/MDMoleculeTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,8 +20,6 @@
  */
 package org.openscience.cdk.modeling.forcefield;
 
-import java.io.File;
-import java.io.FileWriter;
 import java.io.InputStream;
 import java.util.Map;
 
@@ -37,10 +35,10 @@ import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtomContainer;
 import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.io.MDLV2000Reader;
-import org.openscience.cdk.io.MDLWriter;
 import org.openscience.cdk.io.IChemObjectReader.Mode;
 import org.openscience.cdk.modeling.builder3d.ForceFieldConfigurator;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 
 
@@ -68,7 +66,8 @@ public class ForceFieldTests extends CDKTestCase {
 	
 	String input;
 
-	private LoggingTool logger = new LoggingTool(ForceFieldTests.class);
+	private ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ForceFieldTests.class);
 	private boolean standAlone = false;
 
 	/**</diff>
      <filename>src/test/org/openscience/cdk/modeling/forcefield/ForceFieldTests.java</filename>
    </modified>
    <modified>
      <diff>@@ -48,7 +48,6 @@ import org.openscience.cdk.graph.SpanningTreeTest;
 import org.openscience.cdk.graph.matrix.AdjacencyMatrixTest;
 import org.openscience.cdk.tools.DataFeaturesTest;
 import org.openscience.cdk.tools.LoggingToolFactoryTest;
-import org.openscience.cdk.tools.LoggingToolTest;
 import org.openscience.cdk.tools.manipulator.BondManipulatorTest;
 
 /**
@@ -88,7 +87,6 @@ import org.openscience.cdk.tools.manipulator.BondManipulatorTest;
     CDKExceptionTest.class,
     NoSuchAtomExceptionTest.class,
     NoSuchAtomTypeExceptionTest.class,
-    LoggingToolTest.class,
     LoggingToolFactoryTest.class,
     BondManipulatorTest.class,
     AdjacencyMatrixTest.class,</diff>
      <filename>src/test/org/openscience/cdk/modulesuites/McoreTests.java</filename>
    </modified>
    <modified>
      <diff>@@ -48,7 +48,7 @@ public class RingPartitionerTest extends CDKTestCase
 {
 
 	static boolean standAlone = false;
-	//private LoggingTool logger = null;
+	//private static ILoggingTool logger = null;
 
 
 </diff>
      <filename>src/test/org/openscience/cdk/ringsearch/RingPartitionerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,27 +20,33 @@
  */
 package org.openscience.cdk.ringsearch;
 
+import java.io.InputStream;
+import java.util.Iterator;
+
 import org.junit.Assert;
 import org.junit.Test;
 import org.openscience.cdk.CDKConstants;
-import org.openscience.cdk.DefaultChemObjectBuilder;
 import org.openscience.cdk.CDKTestCase;
-import org.openscience.cdk.interfaces.*;
-import org.openscience.cdk.io.IChemObjectReader.Mode;
+import org.openscience.cdk.DefaultChemObjectBuilder;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IChemObject;
+import org.openscience.cdk.interfaces.IMolecule;
+import org.openscience.cdk.interfaces.IRing;
+import org.openscience.cdk.interfaces.IRingSet;
 import org.openscience.cdk.io.MDLV2000Reader;
+import org.openscience.cdk.io.IChemObjectReader.Mode;
 import org.openscience.cdk.smiles.SmilesParser;
 import org.openscience.cdk.templates.MoleculeFactory;
-import org.openscience.cdk.tools.LoggingTool;
-
-import java.io.InputStream;
-import java.util.Iterator;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-standard
  */
 public class SSSRFinderTest extends CDKTestCase {
 
-    private final LoggingTool logger = new LoggingTool(SSSRFinderTest.class);
+    private final ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(SSSRFinderTest.class);
 
     public SSSRFinderTest() {
         super();</diff>
      <filename>src/test/org/openscience/cdk/ringsearch/SSSRFinderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,27 +1,26 @@
 package org.openscience.cdk.similarity;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
 import org.junit.Assert;
 import org.junit.Test;
+import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.ChemFile;
 import org.openscience.cdk.ChemObject;
-import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.exception.CDKException;
 import org.openscience.cdk.interfaces.IAtomContainer;
-import org.openscience.cdk.io.IChemObjectReader.Mode;
 import org.openscience.cdk.io.MDLV2000Reader;
+import org.openscience.cdk.io.IChemObjectReader.Mode;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-
 /**
  * @cdk.module test-fingerprint                     
  */
 public class DistanceMomentTest extends CDKTestCase {
 
     boolean standAlone = false;
-    //private static LoggingTool logger = new LoggingTool(TanimotoTest.class);
 
     private IAtomContainer loadMolecule(String path) throws Exception {
         InputStream ins = this.getClass().getClassLoader().getResourceAsStream(path);</diff>
      <filename>src/test/org/openscience/cdk/similarity/DistanceMomentTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,9 @@
  */
 package org.openscience.cdk.smiles.smarts.parser;
 
+import java.io.InputStream;
+import java.util.List;
+
 import org.junit.Assert;
 import org.junit.Test;
 import org.openscience.cdk.CDKTestCase;
@@ -34,12 +37,10 @@ import org.openscience.cdk.isomorphism.UniversalIsomorphismTester;
 import org.openscience.cdk.isomorphism.matchers.QueryAtomContainer;
 import org.openscience.cdk.smiles.SmilesParser;
 import org.openscience.cdk.smiles.smarts.SMARTSQueryTool;
-import org.openscience.cdk.tools.LoggingTool;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
-import java.io.InputStream;
-import java.util.List;
-
 /**
  * JUnit test routines for the SMARTS substructure search.
  *
@@ -49,7 +50,8 @@ import java.util.List;
  */
 public class SMARTSSearchTest extends CDKTestCase {
 
-    private static LoggingTool logger = new LoggingTool(SMARTSSearchTest.class);
+    private static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(SMARTSSearchTest.class);
 
     private int[] match(String smarts, String smiles) throws Exception {
         SMARTSQueryTool sqt = new SMARTSQueryTool(smarts);</diff>
      <filename>src/test/org/openscience/cdk/smiles/smarts/parser/SMARTSSearchTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,13 +20,31 @@
  */
 package org.openscience.cdk.tools;
 
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.vecmath.Point2d;
+
 import org.junit.Assert;
 import org.junit.Test;
-import org.openscience.cdk.*;
+import org.openscience.cdk.Atom;
+import org.openscience.cdk.Bond;
+import org.openscience.cdk.CDKConstants;
+import org.openscience.cdk.CDKTestCase;
+import org.openscience.cdk.ChemFile;
+import org.openscience.cdk.ChemObject;
+import org.openscience.cdk.Molecule;
 import org.openscience.cdk.atomtype.CDKAtomTypeMatcher;
 import org.openscience.cdk.config.Elements;
 import org.openscience.cdk.exception.CDKException;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IAtomType;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IChemFile;
+import org.openscience.cdk.interfaces.IMolecularFormula;
+import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.io.MDLV2000Reader;
 import org.openscience.cdk.nonotify.NNAtom;
 import org.openscience.cdk.nonotify.NNMolecule;
@@ -36,11 +54,6 @@ import org.openscience.cdk.tools.manipulator.AtomTypeManipulator;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
 
-import javax.vecmath.Point2d;
-import java.io.InputStream;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * Tests CDK's hydrogen adding capabilities in terms of
  * example molecules.
@@ -52,7 +65,6 @@ import java.util.List;
  */
 public class CDKHydrogenAdderTest extends CDKTestCase {
 
-//	private final static LoggingTool logger = new LoggingTool(CDKHydrogenAdderTest.class);
 	private final static CDKHydrogenAdder adder = CDKHydrogenAdder.getInstance(NoNotificationChemObjectBuilder.getInstance());
 	private final static CDKAtomTypeMatcher matcher = CDKAtomTypeMatcher.getInstance(NoNotificationChemObjectBuilder.getInstance());
 </diff>
      <filename>src/test/org/openscience/cdk/tools/CDKHydrogenAdderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -23,10 +23,9 @@ package org.openscience.cdk.tools;
 import org.junit.Assert;
 import org.junit.Test;
 import org.openscience.cdk.CDKTestCase;
-import org.openscience.cdk.tools.LoggingTool;
 
 /**
- * @cdk.module test-core
+ * @cdk.module test-log4j
  */
 public class LoggingToolTest extends CDKTestCase {
 	</diff>
      <filename>src/test/org/openscience/cdk/tools/LoggingToolTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,30 +20,48 @@
  */
 package org.openscience.cdk.tools.manipulator;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.openscience.cdk.*;
-import org.openscience.cdk.interfaces.*;
-import org.openscience.cdk.io.IChemObjectReader.Mode;
-import org.openscience.cdk.io.MDLReader;
-import org.openscience.cdk.CDKTestCase;
-import org.openscience.cdk.tools.IDCreator;
-import org.openscience.cdk.tools.LoggingTool;
-import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
-
 import java.io.InputStream;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openscience.cdk.Atom;
+import org.openscience.cdk.Bond;
+import org.openscience.cdk.CDKTestCase;
+import org.openscience.cdk.ChemFile;
+import org.openscience.cdk.ChemModel;
+import org.openscience.cdk.ChemObject;
+import org.openscience.cdk.ChemSequence;
+import org.openscience.cdk.Molecule;
+import org.openscience.cdk.MoleculeSet;
+import org.openscience.cdk.Reaction;
+import org.openscience.cdk.ReactionSet;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IChemFile;
+import org.openscience.cdk.interfaces.IChemModel;
+import org.openscience.cdk.interfaces.IChemSequence;
+import org.openscience.cdk.interfaces.IMolecule;
+import org.openscience.cdk.interfaces.IMoleculeSet;
+import org.openscience.cdk.interfaces.IReaction;
+import org.openscience.cdk.interfaces.IReactionSet;
+import org.openscience.cdk.io.MDLReader;
+import org.openscience.cdk.io.IChemObjectReader.Mode;
+import org.openscience.cdk.tools.IDCreator;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
+
 /**
  * @cdk.module test-standard
  */
 public class ChemFileManipulatorTest extends CDKTestCase {
     
-	private final static LoggingTool logger = new LoggingTool(ChemFileManipulatorTest.class);
+	private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ChemFileManipulatorTest.class);
 	
 	IMolecule molecule1 = null;
 	IMolecule molecule2 = null;</diff>
      <filename>src/test/org/openscience/cdk/tools/manipulator/ChemFileManipulatorTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,30 +20,46 @@
  */
 package org.openscience.cdk.tools.manipulator;
 
+import java.io.InputStream;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
-import org.openscience.cdk.*;
-import org.openscience.cdk.interfaces.*;
+import org.openscience.cdk.Atom;
+import org.openscience.cdk.AtomContainer;
+import org.openscience.cdk.Bond;
+import org.openscience.cdk.CDKTestCase;
+import org.openscience.cdk.ChemModel;
+import org.openscience.cdk.ChemObject;
+import org.openscience.cdk.Molecule;
+import org.openscience.cdk.MoleculeSet;
+import org.openscience.cdk.Reaction;
+import org.openscience.cdk.ReactionSet;
+import org.openscience.cdk.interfaces.IAtom;
+import org.openscience.cdk.interfaces.IAtomContainer;
+import org.openscience.cdk.interfaces.IBond;
+import org.openscience.cdk.interfaces.IChemModel;
+import org.openscience.cdk.interfaces.IMolecule;
+import org.openscience.cdk.interfaces.IMoleculeSet;
+import org.openscience.cdk.interfaces.IReaction;
+import org.openscience.cdk.interfaces.IReactionSet;
 import org.openscience.cdk.io.MDLRXNV2000Reader;
 import org.openscience.cdk.io.MDLV2000Reader;
 import org.openscience.cdk.io.IChemObjectReader.Mode;
-import org.openscience.cdk.CDKTestCase;
 import org.openscience.cdk.tools.IDCreator;
-import org.openscience.cdk.tools.LoggingTool;
-import org.openscience.cdk.tools.manipulator.ChemModelManipulator;
-
-import java.io.InputStream;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import org.openscience.cdk.tools.ILoggingTool;
+import org.openscience.cdk.tools.LoggingToolFactory;
 
 /**
  * @cdk.module test-standard
  */
 public class ChemModelManipulatorTest extends CDKTestCase {
     
-	private final static LoggingTool logger = new LoggingTool(ChemModelManipulatorTest.class);
+	private final static ILoggingTool logger =
+        LoggingToolFactory.createLoggingTool(ChemModelManipulatorTest.class);
 	
 	IMolecule molecule1 = null;
 	IMolecule molecule2 = null;</diff>
      <filename>src/test/org/openscience/cdk/tools/manipulator/ChemModelManipulatorTest.java</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>src/META-INF/atomtype.libdepends</filename>
    </removed>
    <removed>
      <filename>src/META-INF/core.libdepends</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>c6c8d38a9373064cdec5f9bcadcfc92200486493</id>
    </parent>
  </parents>
  <author>
    <name>Egon Willighagen</name>
    <email>egonw@users.sourceforge.net</email>
  </author>
  <url>http://github.com/egonw/cdk/commit/112f64d6a08feb07cf8c133211a65e3a03a794ca</url>
  <id>112f64d6a08feb07cf8c133211a65e3a03a794ca</id>
  <committed-date>2009-11-03T19:59:57-08:00</committed-date>
  <authored-date>2009-07-03T13:56:30-07:00</authored-date>
  <message>Moved the log4j.jar depending LoggingTool into a separate module

Signed-off-by: Rajarshi Guha &lt;rajarshi.guha@gmail.com&gt;</message>
  <tree>955eb52a7fcbbd9d779f0036da9b93b9bf2f818a</tree>
  <committer>
    <name>Rajarshi  Guha</name>
    <email>rajarshi.guha@gmail.com</email>
  </committer>
</commit>
