diff --git a/samples/spring-hibernate/src/org/jsecurity/samples/sprhib/eis/hibernate/HibernateDAO.java b/samples/spring-hibernate/src/org/jsecurity/samples/sprhib/eis/hibernate/HibernateDAO.java
index 938c990..75bc498 100644
--- a/samples/spring-hibernate/src/org/jsecurity/samples/sprhib/eis/hibernate/HibernateDAO.java
+++ b/samples/spring-hibernate/src/org/jsecurity/samples/sprhib/eis/hibernate/HibernateDAO.java
@@ -18,8 +18,6 @@
  */
 package org.jsecurity.samples.sprhib.eis.hibernate;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.hibernate.Filter;
 import org.hibernate.LockMode;
 import org.hibernate.ReplicationMode;
@@ -44,8 +42,6 @@
 public class HibernateDAO extends HibernateDaoSupport
         implements HibernateOperations, DataAccessObject {
 
-    private static final Log log = LogFactory.getLog(HibernateDAO.class);
-
     public Object execute(HibernateCallback action) throws DataAccessException {
         return getHibernateTemplate().execute(action);
     }
diff --git a/src/org/jsecurity/config/ResourceConfiguration.java b/src/org/jsecurity/config/ResourceConfiguration.java
index 0942140..36290f5 100644
--- a/src/org/jsecurity/config/ResourceConfiguration.java
+++ b/src/org/jsecurity/config/ResourceConfiguration.java
@@ -18,8 +18,6 @@
  */
 package org.jsecurity.config;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.jsecurity.mgt.SecurityManager;
 
 import java.io.InputStream;
@@ -32,7 +30,6 @@
  */
 public abstract class ResourceConfiguration implements Configuration, Serializable {
 
-    private static final Log log = LogFactory.getLog(ResourceConfiguration.class);
     protected transient SecurityManager securityManager;
 
     public ResourceConfiguration() {
diff --git a/src/org/jsecurity/io/AbstractResource.java b/src/org/jsecurity/io/AbstractResource.java
index 2f85d35..a05b1cc 100644
--- a/src/org/jsecurity/io/AbstractResource.java
+++ b/src/org/jsecurity/io/AbstractResource.java
@@ -18,9 +18,6 @@
  */
 package org.jsecurity.io;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
@@ -33,8 +30,6 @@
  */
 public abstract class AbstractResource implements Serializable {
 
-    private static final Log log = LogFactory.getLog(AbstractResource.class);
-
     public AbstractResource() {
     }
 
diff --git a/src/org/jsecurity/io/IniResource.java b/src/org/jsecurity/io/IniResource.java
index c64ec0f..28b2f78 100644
--- a/src/org/jsecurity/io/IniResource.java
+++ b/src/org/jsecurity/io/IniResource.java
@@ -45,9 +45,10 @@
     public static final String HEADER_PREFIX = "[";
     public static final String HEADER_SUFFIX = "]";
 
-    protected Map<String, Map<String, String>> sections = new LinkedHashMap<String, Map<String, String>>();
+    protected Map<String, Map<String, String>> sections;
 
     public IniResource() {
+        sections = new LinkedHashMap<String, Map<String, String>>();
     }
 
     public IniResource(String configBodyOrResourcePath) {
diff --git a/src/org/jsecurity/jndi/JndiLocator.java b/src/org/jsecurity/jndi/JndiLocator.java
index fabc0c6..c0d16bd 100644
--- a/src/org/jsecurity/jndi/JndiLocator.java
+++ b/src/org/jsecurity/jndi/JndiLocator.java
@@ -43,7 +43,7 @@
 public class JndiLocator {
 
     /**
-     * Log, available to subclasses.
+     * Private class log.
      */
     private static final Log log = LogFactory.getLog(JndiLocator.class);
 
diff --git a/src/org/jsecurity/web/WebRememberMeManager.java b/src/org/jsecurity/web/WebRememberMeManager.java
index 3c16a86..990f404 100644
--- a/src/org/jsecurity/web/WebRememberMeManager.java
+++ b/src/org/jsecurity/web/WebRememberMeManager.java
@@ -18,8 +18,6 @@
  */
 package org.jsecurity.web;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.jsecurity.codec.Base64;
 import org.jsecurity.subject.AbstractRememberMeManager;
 import org.jsecurity.web.attr.CookieAttribute;
@@ -62,8 +60,6 @@
      */
     public static final String DEFAULT_REMEMBER_ME_COOKIE_NAME = "rememberMe";
 
-    private static final Log log = LogFactory.getLog(WebRememberMeManager.class);
-
     protected WebAttribute<String> identityAttribute = null;
 
     public WebRememberMeManager() {
diff --git a/src/org/jsecurity/web/servlet/ServletContextSupport.java b/src/org/jsecurity/web/servlet/ServletContextSupport.java
index d3b6d0b..9d2f76b 100644
--- a/src/org/jsecurity/web/servlet/ServletContextSupport.java
+++ b/src/org/jsecurity/web/servlet/ServletContextSupport.java
@@ -18,8 +18,6 @@
  */
 package org.jsecurity.web.servlet;
 
-import org.jsecurity.web.DefaultWebSecurityManager;
-
 import javax.servlet.ServletContext;
 
 /**
@@ -31,11 +29,6 @@
 public class ServletContextSupport {
 
     //TODO - complete JavaDoc
-
-    public static final String SESSION_MODE_CONTEXT_PARAM_NAME = "sessionMode";
-    public static final String HTTP_SESSION_MODE = DefaultWebSecurityManager.HTTP_SESSION_MODE;
-    public static final String JSECURITY_SESSION_MODE = DefaultWebSecurityManager.JSECURITY_SESSION_MODE;
-
     private ServletContext servletContext = null;
 
     public ServletContext getServletContext() {
