diff --git a/pom.xml b/pom.xml
index b5e7829..7dd3c7e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,6 +55,7 @@
     </scm>
 
     <properties>
+        <jdk.version>1.5</jdk.version>
         <hsqldbVersion>1.8.0.7</hsqldbVersion>
         <jettyVersion>6.1.14</jettyVersion>
         <kiVersion>1.0-SNAPSHOT</kiVersion>
@@ -64,9 +65,9 @@
 
     <modules>
         <module>core</module>
+        <module>web</module>
         <module>support</module>
         <module>samples</module>
-        <module>web</module>
     </modules>
 
     <build>
@@ -87,8 +88,16 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
+                    <source>${jdk.version}</source>
+                    <target>${jdk.version}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.3</version>
+                <configuration>
+                    <encoding>UTF-8</encoding>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/samples/spring-hibernate/src/org/jsecurity/samples/sprhib/dao/BootstrapDataPopulator.java b/samples/spring-hibernate/src/org/jsecurity/samples/sprhib/dao/BootstrapDataPopulator.java
index 56fcfd0..2111995 100644
--- a/samples/spring-hibernate/src/org/jsecurity/samples/sprhib/dao/BootstrapDataPopulator.java
+++ b/samples/spring-hibernate/src/org/jsecurity/samples/sprhib/dao/BootstrapDataPopulator.java
@@ -55,7 +55,7 @@
         jdbcTemplate.execute( "insert into roles values (1, 'user', 'The default role given to all users.')" );
         jdbcTemplate.execute( "insert into roles values (2, 'admin', 'The administrator role only given to site admins')" );
         jdbcTemplate.execute( "insert into roles_permissions values (2, 'user:*')" );
-        jdbcTemplate.execute( "insert into users(id,username,email,password) values (1, 'admin', 'sample@jsecurity.org', '" + new Sha256Hash("admin").toHex() + "')" );
+        jdbcTemplate.execute( "insert into users(id,username,email,password) values (1, 'admin', 'sample@ki.apache.org', '" + new Sha256Hash("admin").toHex() + "')" );
         jdbcTemplate.execute( "insert into users_roles values (1, 2)" );
         
 
diff --git a/samples/spring-hibernate/web/WEB-INF/applicationContext.xml b/samples/spring-hibernate/web/WEB-INF/applicationContext.xml
index 5380a3a..bf61f9b 100644
--- a/samples/spring-hibernate/web/WEB-INF/applicationContext.xml
+++ b/samples/spring-hibernate/web/WEB-INF/applicationContext.xml
@@ -44,7 +44,7 @@
          instance.  Change to your application's settings for a real app. -->
     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
         <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
-        <property name="url" value="jdbc:hsqldb:mem:jsecurity-spring-hibernate"/>
+        <property name="url" value="jdbc:hsqldb:mem:ki-spring-hibernate"/>
         <property name="username" value="sa"/>
     </bean>
 
diff --git a/samples/spring-hibernate/web/WEB-INF/classes/ehcache.xml b/samples/spring-hibernate/web/WEB-INF/classes/ehcache.xml
index 31301c4..f0477d9 100644
--- a/samples/spring-hibernate/web/WEB-INF/classes/ehcache.xml
+++ b/samples/spring-hibernate/web/WEB-INF/classes/ehcache.xml
@@ -18,7 +18,7 @@
   -->
 <ehcache>
 
-    <diskStore path="java.io.tmpdir/jsecurity-spring-hibernate-ehcache"/>
+    <diskStore path="java.io.tmpdir/ki-spring-hibernate-ehcache"/>
 
 
     <defaultCache
diff --git a/samples/spring-hibernate/web/WEB-INF/jsp/home.jsp b/samples/spring-hibernate/web/WEB-INF/jsp/home.jsp
index 03c1713..eb05c2e 100644
--- a/samples/spring-hibernate/web/WEB-INF/jsp/home.jsp
+++ b/samples/spring-hibernate/web/WEB-INF/jsp/home.jsp
@@ -17,7 +17,7 @@
   ~ under the License.
   --%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<%@ taglib prefix="jsec" uri="http://www.jsecurity.org/tags" %>
+<%@ taglib prefix="jsec" uri="http://ki.apache.org/tags" %>
 
 <html>
 <head>
diff --git a/samples/spring-hibernate/web/WEB-INF/jsp/manageUsers.jsp b/samples/spring-hibernate/web/WEB-INF/jsp/manageUsers.jsp
index 8e56ed4..96cd203 100644
--- a/samples/spring-hibernate/web/WEB-INF/jsp/manageUsers.jsp
+++ b/samples/spring-hibernate/web/WEB-INF/jsp/manageUsers.jsp
@@ -17,7 +17,7 @@
   ~ under the License.
   --%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<%@ taglib prefix="jsec" uri="http://www.jsecurity.org/tags" %>
+<%@ taglib prefix="jsec" uri="http://ki.apache.org/tags" %>
 
 <html>
 <head>
diff --git a/samples/spring-hibernate/web/WEB-INF/web.xml b/samples/spring-hibernate/web/WEB-INF/web.xml
index 2448581..033ca63 100644
--- a/samples/spring-hibernate/web/WEB-INF/web.xml
+++ b/samples/spring-hibernate/web/WEB-INF/web.xml
@@ -38,7 +38,7 @@
     -->
     <context-param>
         <param-name>webAppRootKey</param-name>
-        <param-value>jsecurity-spring-hibernate-sample.webapp.root</param-value>
+        <param-value>ki-spring-hibernate-sample.webapp.root</param-value>
     </context-param>
 
     <!-- ===================================================================
@@ -69,16 +69,16 @@
                 # The Apache KiFilter configuration is very powerful and flexible, while still remaining succinct.
                 # Please read the comprehensive example, with full comments and explanations, in the JavaDoc:
                 #
-                # http://www.jsecurity.org/api/org/jsecurity/web/servlet/Apache KiFilter.html
+                # http://ki.apache.org/api/org/apache/ki/web/servlet/KiFilter.html
 
-                # If you'd prefer to not have this configuration in web.xml, you can create a file called jsecurity.ini
-                # in the root of your classpath and Apache Ki will automatically pick it up.
+                # If you'd prefer to not have this configuration in web.xml, you can create a file called ki.ini
+                # in the root of your classpath and Ki will automatically pick it up.
 
                 [filters]
                 # Override the authentication filter to pass thru so we can handle login logic in our controller
                 authc = org.apache.ki.web.filter.authc.PassThruAuthenticationFilter
-                jsecurity.loginUrl = /s/login
-                jsecurity.unauthorizedUrl = /unauthorized.jsp
+                ki.loginUrl = /s/login
+                ki.unauthorizedUrl = /unauthorized.jsp
                 authc.successUrl = /s/home
 
                 [urls]
diff --git a/samples/spring/etc/ehcache.xml b/samples/spring/etc/ehcache.xml
index 0c94f8d..aa3f00b 100644
--- a/samples/spring/etc/ehcache.xml
+++ b/samples/spring/etc/ehcache.xml
@@ -1,98 +1,98 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<!-- EhCache XML configuration file used for Apache Ki spring sample application -->
-<ehcache>
-
-  <!-- Sets the path to the directory where cache .data files are created.
-
-If the path is a Java System Property it is replaced by
-its value in the running VM.
-
-The following properties are translated:
-user.home - User's home directory
-user.dir - User's current working directory
-java.io.tmpdir - Default temp file path -->
-  <diskStore path="java.io.tmpdir/jsecurity-spring-sample"/>
-
-
-  <!--Default Cache configuration. These will applied to caches programmatically created through
-  the CacheManager.
-
-  The following attributes are required:
-
-  maxElementsInMemory            - Sets the maximum number of objects that will be created in memory
-  eternal                        - Sets whether elements are eternal. If eternal,  timeouts are ignored and the
-                                   element is never expired.
-  overflowToDisk                 - Sets whether elements can overflow to disk when the in-memory cache
-                                   has reached the maxInMemory limit.
-
-  The following attributes are optional:
-  timeToIdleSeconds              - Sets the time to idle for an element before it expires.
-                                   i.e. The maximum amount of time between accesses before an element expires
-                                   Is only used if the element is not eternal.
-                                   Optional attribute. A value of 0 means that an Element can idle for infinity.
-                                   The default value is 0.
-  timeToLiveSeconds              - Sets the time to live for an element before it expires.
-                                   i.e. The maximum time between creation time and when an element expires.
-                                   Is only used if the element is not eternal.
-                                   Optional attribute. A value of 0 means that and Element can live for infinity.
-                                   The default value is 0.
-  diskPersistent                 - Whether the disk store persists between restarts of the Virtual Machine.
-                                   The default value is false.
-  diskExpiryThreadIntervalSeconds- The number of seconds between runs of the disk expiry thread. The default value
-                                   is 120 seconds.
-  memoryStoreEvictionPolicy      - Policy would be enforced upon reaching the maxElementsInMemory limit. Default
-                                   policy is Least Recently Used (specified as LRU). Other policies available -
-                                   First In First Out (specified as FIFO) and Less Frequently Used
-                                   (specified as LFU)
-  -->
-
-  <defaultCache
-    maxElementsInMemory="10000"
-    eternal="false"
-    timeToIdleSeconds="120"
-    timeToLiveSeconds="120"
-    overflowToDisk="false"
-    diskPersistent="false"
-    diskExpiryThreadIntervalSeconds="120"
-    />
-
-  <!-- We want eternal="true" (with no timeToIdle or timeToLive settings) because Apache Ki manages session
-expirations explicitly.  If we set it to false and then set corresponding timeToIdle and timeToLive properties,
-ehcache would evict sessions without Apache Ki's knowledge, which would cause many problems
-(e.g. "My Apache Ki session timeout is 30 minutes - why isn't a session available after 2 minutes?"
-Answer - ehcache expired it due to the timeToIdle property set to 120 seconds.)
-
-diskPersistent=true since we want an enterprise session management feature - ability to use sessions after
-even after a JVM restart.  -->
-  <cache name="jsecurity-activeSessionCache"
-         maxElementsInMemory="20000"
-         eternal="true"
-         overflowToDisk="true"
-         diskPersistent="true"
-         diskExpiryThreadIntervalSeconds="600"/>
-
-  <cache name="org.apache.ki.realm.SimpleAccountRealm.authorization"
-         maxElementsInMemory="100"
-         eternal="false"
-         timeToLiveSeconds="600"
-         overflowToDisk="false"/>
-
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<!-- EhCache XML configuration file used for Apache Ki spring sample application -->
+<ehcache>
+
+  <!-- Sets the path to the directory where cache .data files are created.
+
+If the path is a Java System Property it is replaced by
+its value in the running VM.
+
+The following properties are translated:
+user.home - User's home directory
+user.dir - User's current working directory
+java.io.tmpdir - Default temp file path -->
+  <diskStore path="java.io.tmpdir/ki-spring-sample"/>
+
+
+  <!--Default Cache configuration. These will applied to caches programmatically created through
+  the CacheManager.
+
+  The following attributes are required:
+
+  maxElementsInMemory            - Sets the maximum number of objects that will be created in memory
+  eternal                        - Sets whether elements are eternal. If eternal,  timeouts are ignored and the
+                                   element is never expired.
+  overflowToDisk                 - Sets whether elements can overflow to disk when the in-memory cache
+                                   has reached the maxInMemory limit.
+
+  The following attributes are optional:
+  timeToIdleSeconds              - Sets the time to idle for an element before it expires.
+                                   i.e. The maximum amount of time between accesses before an element expires
+                                   Is only used if the element is not eternal.
+                                   Optional attribute. A value of 0 means that an Element can idle for infinity.
+                                   The default value is 0.
+  timeToLiveSeconds              - Sets the time to live for an element before it expires.
+                                   i.e. The maximum time between creation time and when an element expires.
+                                   Is only used if the element is not eternal.
+                                   Optional attribute. A value of 0 means that and Element can live for infinity.
+                                   The default value is 0.
+  diskPersistent                 - Whether the disk store persists between restarts of the Virtual Machine.
+                                   The default value is false.
+  diskExpiryThreadIntervalSeconds- The number of seconds between runs of the disk expiry thread. The default value
+                                   is 120 seconds.
+  memoryStoreEvictionPolicy      - Policy would be enforced upon reaching the maxElementsInMemory limit. Default
+                                   policy is Least Recently Used (specified as LRU). Other policies available -
+                                   First In First Out (specified as FIFO) and Less Frequently Used
+                                   (specified as LFU)
+  -->
+
+  <defaultCache
+    maxElementsInMemory="10000"
+    eternal="false"
+    timeToIdleSeconds="120"
+    timeToLiveSeconds="120"
+    overflowToDisk="false"
+    diskPersistent="false"
+    diskExpiryThreadIntervalSeconds="120"
+    />
+
+  <!-- We want eternal="true" (with no timeToIdle or timeToLive settings) because Apache Ki manages session
+expirations explicitly.  If we set it to false and then set corresponding timeToIdle and timeToLive properties,
+ehcache would evict sessions without Apache Ki's knowledge, which would cause many problems
+(e.g. "My Apache Ki session timeout is 30 minutes - why isn't a session available after 2 minutes?"
+Answer - ehcache expired it due to the timeToIdle property set to 120 seconds.)
+
+diskPersistent=true since we want an enterprise session management feature - ability to use sessions after
+even after a JVM restart.  -->
+  <cache name="jsecurity-activeSessionCache"
+         maxElementsInMemory="20000"
+         eternal="true"
+         overflowToDisk="true"
+         diskPersistent="true"
+         diskExpiryThreadIntervalSeconds="600"/>
+
+  <cache name="org.apache.ki.realm.SimpleAccountRealm.authorization"
+         maxElementsInMemory="100"
+         eternal="false"
+         timeToLiveSeconds="600"
+         overflowToDisk="false"/>
+
 </ehcache>
diff --git a/samples/spring/etc/webstart.spring.xml b/samples/spring/etc/webstart.spring.xml
index 88c6ae7..c0c5c7e 100644
--- a/samples/spring/etc/webstart.spring.xml
+++ b/samples/spring/etc/webstart.spring.xml
@@ -31,7 +31,7 @@
 
   <bean id="sampleManager"
         class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
-    <property name="serviceUrl" value="http://localhost:8080/jsecurity-spring/remoting/sampleManager"/>
+    <property name="serviceUrl" value="http://localhost:8080/ki-spring/remoting/sampleManager"/>
     <property name="serviceInterface" value="org.apache.ki.samples.spring.SampleManager"/>
     <property name="remoteInvocationFactory" ref="secureRemoteInvocationFactory"/>
   </bean>
diff --git a/samples/spring/pom.xml b/samples/spring/pom.xml
index 89314da..153750e 100644
--- a/samples/spring/pom.xml
+++ b/samples/spring/pom.xml
@@ -18,7 +18,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-war-plugin</artifactId>
-                <version>2.0</version>
+                <version>2.0.2</version>
                 <configuration>
                     <webResources>
                         <resource>
diff --git a/samples/spring/webroot/WEB-INF/applicationContext.xml b/samples/spring/webroot/WEB-INF/applicationContext.xml
index 2a8aab0..1d8b3e8 100644
--- a/samples/spring/webroot/WEB-INF/applicationContext.xml
+++ b/samples/spring/webroot/WEB-INF/applicationContext.xml
@@ -24,7 +24,7 @@
     <!-- Sample RDBMS data source that would exist in any application - not Apache Ki related. -->
     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
         <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
-        <property name="url" value="jdbc:hsqldb:mem:jsecurity-spring"/>
+        <property name="url" value="jdbc:hsqldb:mem:ki-spring"/>
         <property name="username" value="sa"/>
     </bean>
     <!-- Populates the sample database with sample users and roles. -->
@@ -43,7 +43,7 @@
     <bean id="securityManager" class="org.apache.ki.web.DefaultWebSecurityManager">
         <!-- Single realm app.  If you have multiple realms, use the 'realms' property instead. -->
         <property name="realm" ref="jdbcRealm"/>
-        <property name="sessionMode" value="jsecurity"/>
+        <property name="sessionMode" value="ki"/>
     </bean>
 
     <!-- Used by the SecurityManager to access security data (users, roles, etc).
diff --git a/samples/spring/webroot/WEB-INF/resources/include.jsp b/samples/spring/webroot/WEB-INF/resources/include.jsp
index 183cf77..defab00 100644
--- a/samples/spring/webroot/WEB-INF/resources/include.jsp
+++ b/samples/spring/webroot/WEB-INF/resources/include.jsp
@@ -21,4 +21,4 @@
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
-<%@ taglib prefix="jsecurity" uri="http://www.jsecurity.org/tags" %>
\ No newline at end of file
+<%@ taglib prefix="jsecurity" uri="http://ki.apache.org/tags" %>
\ No newline at end of file
diff --git a/samples/spring/webroot/WEB-INF/resources/jsecurity.jnlp.jsp b/samples/spring/webroot/WEB-INF/resources/jsecurity.jnlp.jsp
index dfbaedd..c7002a6 100644
--- a/samples/spring/webroot/WEB-INF/resources/jsecurity.jnlp.jsp
+++ b/samples/spring/webroot/WEB-INF/resources/jsecurity.jnlp.jsp
@@ -24,7 +24,7 @@
     <information>
         <title>Apache Ki Sample Application</title>
         <vendor>Apache Ki</vendor>
-        <homepage href="http://www.jsecurity.org"/>
+        <homepage href="http://ki.apache.org"/>
         <description>Apache Ki Sample Application</description>
         <description kind="short">A webstart application used to demonstrate Apache Ki session and security
             management.
@@ -37,11 +37,11 @@
     </security>
     <resources>
         <j2se version="1.5"/>
-        <jar href="jsecurity-spring-sample.jar"/>
-        <jar href="jsecurity.jar"/>
+        <jar href="ki-spring-sample.jar"/>
+        <jar href="ki.jar"/>
         <jar href="spring.jar"/>
         <jar href="slf4j-api.jar"/>
-        <property name="jsecurity.session.id" value="${sessionId}"/>
+        <property name="ki.session.id" value="${sessionId}"/>
     </resources>
     <application-desc main-class="org.apache.ki.samples.spring.ui.WebStartDriver"/>
 </jnlp>
diff --git a/samples/spring/webroot/WEB-INF/web.xml b/samples/spring/webroot/WEB-INF/web.xml
index 231a878..beefcce 100644
--- a/samples/spring/webroot/WEB-INF/web.xml
+++ b/samples/spring/webroot/WEB-INF/web.xml
@@ -56,8 +56,8 @@
          Filters
          ================================================================== -->
     <filter>
-        <filter-name>Apache KiFilter</filter-name>
-        <filter-class>org.apache.ki.spring.SpringApache KiFilter</filter-class>
+        <filter-name>KiFilter</filter-name>
+        <filter-class>org.apache.ki.spring.SpringKiFilter</filter-class>
 
         <init-param>
             <param-name>config</param-name>
@@ -65,15 +65,15 @@
                 # The Apache KiFilter configuration is very powerful and flexible, while still remaining succinct.
                 # Please read the comprehensive example, with full comments and explanations, in the JavaDoc:
                 #
-                # http://www.jsecurity.org/api/org/jsecurity/web/servlet/Apache KiFilter.html
+                # http://ki.apache.org/api/org/apache/ki/web/servlet/KiFilter.html
 
                 [filters]
-                jsecurity.loginUrl = /s/login
+                ki.loginUrl = /s/login
                 authc.successUrl = /s/index
 
                 [urls]
                 /s/index=authc
-                /s/jsecurity.jnlp=authc,user
+                /s/ki.jnlp=authc,user
                 /remoting/**=authc, perms[remote:invoke]
             </param-value>
         </init-param>
@@ -81,11 +81,11 @@
     </filter>
 
     <filter-mapping>
-        <filter-name>Apache KiFilter</filter-name>
+        <filter-name>KiFilter</filter-name>
         <url-pattern>/s/*</url-pattern>
     </filter-mapping>
     <filter-mapping>
-        <filter-name>Apache KiFilter</filter-name>
+        <filter-name>KiFilter</filter-name>
         <url-pattern>/remoting/*</url-pattern>
     </filter-mapping>
 
diff --git a/samples/web/webroot/WEB-INF/web.xml b/samples/web/webroot/WEB-INF/web.xml
index 789a5e4..222778e 100644
--- a/samples/web/webroot/WEB-INF/web.xml
+++ b/samples/web/webroot/WEB-INF/web.xml
@@ -32,20 +32,20 @@
                 # The Apache KiFilter configuration is very powerful and flexible, while still remaining succinct.
                 # Please read the comprehensive example, with full comments and explanations, in the JavaDoc:
                 #
-                # http://www.jsecurity.org/api/org/jsecurity/web/servlet/Apache KiFilter.html
+                # http://ki.apache.org/api/org/apache/ki/web/servlet/KiFilter.html
 
                 [main]
 
                 demoRealm = org.apache.ki.realm.text.PropertiesRealm
 
                 [filters]
-                jsecurity.loginUrl = /login.jsp
+                ki.loginUrl = /login.jsp
 
                 [urls]
                 # The /login.jsp is not restricted to authenticated users (otherwise no one could log in!), but
                 # the 'authc' filter must still be specified for it so it can process that url's
                 # login submissions. It is 'smart' enough to allow those requests through as specified by the
-                # jsecurity.loginUrl above.
+                # ki.loginUrl above.
                 /login.jsp = authc
 
                 /account/** = authc
diff --git a/samples/web/webroot/include.jsp b/samples/web/webroot/include.jsp
index e1387a1..b1d7f28 100644
--- a/samples/web/webroot/include.jsp
+++ b/samples/web/webroot/include.jsp
@@ -19,4 +19,4 @@
 <%@ page import="org.apache.ki.SecurityUtils" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
-<%@ taglib prefix="jsec" uri="http://www.jsecurity.org/tags" %>
\ No newline at end of file
+<%@ taglib prefix="jsec" uri="http://ki.apache.org/tags" %>
\ No newline at end of file
diff --git a/web/src/org/apache/ki/web/WebUtils.java b/web/src/org/apache/ki/web/WebUtils.java
index db7de54..1ca3a49 100644
--- a/web/src/org/apache/ki/web/WebUtils.java
+++ b/web/src/org/apache/ki/web/WebUtils.java
@@ -69,7 +69,7 @@
 
     /**
      * {@link org.apache.ki.session.Session Session} key used to save a request and later restore it, for example when redirecting to a
-     * requested page after login, equal to <code>jsecuritySavedRequest</code>.
+     * requested page after login, equal to <code>kiSavedRequest</code>.
      */
     public static final String SAVED_REQUEST_KEY = "kiSavedRequest";
 
diff --git a/web/src/org/apache/ki/web/config/package-info.java b/web/src/org/apache/ki/web/config/package-info.java
index 51d1024..58c083a 100644
--- a/web/src/org/apache/ki/web/config/package-info.java
+++ b/web/src/org/apache/ki/web/config/package-info.java
@@ -1,22 +1,22 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-/**
- * Web-specific implementation extensions to the <code>org.jsecurity.config</code> components.
- */
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/**
+ * Web-specific implementation extensions to the <code>org.apache.ki.config</code> components.
+ */
 package org.apache.ki.web.config;
diff --git a/web/src/org/apache/ki/web/servlet/KiFilter.java b/web/src/org/apache/ki/web/servlet/KiFilter.java
index 3f53555..0f909bb 100644
--- a/web/src/org/apache/ki/web/servlet/KiFilter.java
+++ b/web/src/org/apache/ki/web/servlet/KiFilter.java
@@ -53,7 +53,7 @@
  * <p/>
  * <pre>&lt;filter&gt;
  * &lt;filter-name&gt;JSecurityFilter&lt;/filter-name&gt;
- * &lt;filter-class&gt;org.jsecurity.web.servlet.JSecurityFilter&lt;/filter-class&gt;
+ * &lt;filter-class&gt;org.apache.ki.web.servlet.KiFilter&lt;/filter-class&gt;
  * &lt;init-param&gt;&lt;param-name&gt;config&lt;/param-name&gt;&lt;param-value&gt;
  * <p/>
  * #NOTE:  This config looks pretty long - but its not - its only 5 lines of actual config.
@@ -71,9 +71,9 @@
  * # (e.g. Web MVC plus Java Web Start or Flash), or are doing distributed/shared Sessions for
  * # Single Sign On, HttpSessions aren't good enough.  You'll need to use Apache Ki's more powerful
  * # (and client-agnostic) session management.  You can enable this by uncommenting the following line
- * # and changing 'http' to 'jsecurity'
+ * # and changing 'http' to 'ki'
  * #
- * #securityManager = {@link org.apache.ki.web.DefaultWebSecurityManager org.jsecurity.web.DefaultWebSecurityManager}
+ * #securityManager = {@link org.apache.ki.web.DefaultWebSecurityManager org.apache.ki.web.DefaultWebSecurityManager}
  * #securityManager.{@link org.apache.ki.web.DefaultWebSecurityManager#setSessionMode(String) sessionMode} = http
  * <p/>
  * [filters]
diff --git a/web/test/org/apache/ki/web/DefaultWebSecurityManagerTest.java b/web/test/org/apache/ki/web/DefaultWebSecurityManagerTest.java
index d6ae2e5..078039e 100644
--- a/web/test/org/apache/ki/web/DefaultWebSecurityManagerTest.java
+++ b/web/test/org/apache/ki/web/DefaultWebSecurityManagerTest.java
@@ -46,7 +46,7 @@
     }
 
     @Test
-    public void jsecuritySessionModeInit() {
+    public void kiSessionModeInit() {
         sm.setSessionMode(DefaultWebSecurityManager.KI_SESSION_MODE);
     }
 
