diff --git a/build/build.xml b/build/build.xml
index c0dec9d..71a7165 100644
--- a/build/build.xml
+++ b/build/build.xml
@@ -595,6 +595,9 @@
       <get src="${jetty-util.dir}/${jetty-util.jar}" dest="${dependencies}/${jetty-util.jar}" usetimestamp="true" />
       <get src="${htmlparser.dir}/${htmlparser.jar}" dest="${dependencies}/${htmlparser.jar}" usetimestamp="true" />
       <get src="${htmlparser.dir}/${htmlserializer.jar}" dest="${dependencies}/${htmlserializer.jar}" usetimestamp="true" />
+      <get src="${easymock.dir}/${easymock.jar}" dest="${dependencies}/${easymock.jar}" usetimestamp="true" />
+      <get src="${easymockclassextension.dir}/${easymockclassextension.jar}" dest="${dependencies}/${easymockclassextension.jar}" usetimestamp="true" />
+       <get src="${cglib.dir}/${cglib.jar}" dest="${dependencies}/${cglib.jar}" usetimestamp="true" />
     </parallel>
   </target>
 
diff --git a/bundle/pom.xml b/bundle/pom.xml
index e99786c..34d1807 100644
--- a/bundle/pom.xml
+++ b/bundle/pom.xml
@@ -18,13 +18,13 @@
     <parent>
         <groupId>org.apache.abdera</groupId>
         <artifactId>abdera</artifactId>
-        <version>0.4.0-incubating</version>
+        <version>0.5.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>abdera-bundle</artifactId>
     <packaging>jar</packaging>
     <name>Abdera Bundle Jar</name>
-    <version>0.4.0-incubating</version>
+    <version>0.5.0-incubating-SNAPSHOT</version>
     <description>Bundle of all Abdera jars</description>
     <inceptionYear>2006</inceptionYear>
     <url>http://incubator.apache.org/abdera</url>
@@ -40,97 +40,97 @@
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-client</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-spring</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-server</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-jcr</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-couchdb</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-filesystem</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-jdbc</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-security</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-gdata</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-geo</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-html</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-json</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-main</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-media</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-oauth</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-opensearch</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-serializer</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-sharing</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.abdera</groupId>
             <artifactId>abdera-extensions-wsse</artifactId>
-            <version>0.4.0-incubating</version>
+            <version>${project.version}</version>
         </dependency>
     </dependencies>
     
diff --git a/dependencies/deps.properties b/dependencies/deps.properties
index c6c3063..589b2ba 100644
--- a/dependencies/deps.properties
+++ b/dependencies/deps.properties
@@ -76,4 +76,12 @@
 htmlparser.zip=http://about.validator.nu/htmlparser/htmlparser-1.0.5.zip
 htmlparser.dir=http://people.apache.org/~jmsnell
 htmlparser.jar=htmlparser-1.0.5.jar
-htmlserializer.jar=serializer.jar
\ No newline at end of file
+htmlserializer.jar=serializer.jar
+
+#### Required for tests ####
+easymock.dir=http://repo1.maven.org/maven2/org/easymock/easymock/2.3/
+easymock.jar=easymock-2.3.jar
+easymockclassextension.dir=http://repo1.maven.org/maven2/org/easymock/easymockclassextension/2.3/
+easymockclassextension.jar=easymockclassextension-2.3.jar
+cglib.dir=http://repo1.maven.org/maven2/cglib/cglib-nodep/2.1_3/
+cglib.jar=cglib-nodep-2.1_3.jar
diff --git a/server/pom.xml b/server/pom.xml
index 6e5f2b4..a123b9a 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -14,60 +14,81 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <parent>
-    <groupId>org.apache.abdera</groupId>
-    <artifactId>abdera</artifactId>
-    <version>0.4.0-incubating</version>
-  </parent>  
-  <modelVersion>4.0.0</modelVersion>
-  <artifactId>abdera-server</artifactId>
-  <packaging>jar</packaging>
-  <name>Abdera Server</name>
-  <version>0.4.0-incubating</version>
-  <description>Atom Publishing Protocol Specification Server-Side Implementation</description>
-
-  <properties>
-    <topDir>${basedir}/..</topDir>
-  </properties>
-  
-  <dependencies>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.abdera</groupId>
-      <artifactId>abdera-core</artifactId>
-      <version>0.4.0-incubating</version>
-      <scope>compile</scope>
-    </dependency>   
-    <dependency>
-      <groupId>org.apache.abdera</groupId>
-      <artifactId>abdera-parser</artifactId>
-      <version>0.4.0-incubating</version>
-      <scope>compile</scope>
-    </dependency>   
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <version>2.4</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jetty</artifactId>
-      <version>${jetty.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.abdera</groupId>
-      <artifactId>abdera-client</artifactId>
-      <version>0.4.0-incubating</version>
-      <scope>test</scope>
-    </dependency>   
-  </dependencies>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <groupId>org.apache.abdera</groupId>
+    <artifactId>abdera</artifactId>
+    <version>0.4.0-incubating</version>
+  </parent>  
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>abdera-server</artifactId>
+  <packaging>jar</packaging>
+  <name>Abdera Server</name>
+  <version>0.4.0-incubating</version>
+  <description>Atom Publishing Protocol Specification Server-Side Implementation</description>
+
+  <properties>
+    <topDir>${basedir}/..</topDir>
+  </properties>
+  
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.abdera</groupId>
+      <artifactId>abdera-core</artifactId>
+      <version>0.4.0-incubating</version>
+      <scope>compile</scope>
+    </dependency>   
+    <dependency>
+      <groupId>org.apache.abdera</groupId>
+      <artifactId>abdera-parser</artifactId>
+      <version>0.4.0-incubating</version>
+      <scope>compile</scope>
+    </dependency>   
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <version>2.4</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.mortbay.jetty</groupId>
+      <artifactId>jetty</artifactId>
+      <version>${jetty.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.abdera</groupId>
+      <artifactId>abdera-client</artifactId>
+      <version>0.4.0-incubating</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
+      	<groupId>org.easymock</groupId>
+      	<artifactId>easymock</artifactId>
+      	<version>2.3</version>
+      	<scope>test</scope>
+      </dependency>
+      
+      <dependency>
+      	<groupId>org.easymock</groupId>
+      	<artifactId>easymockclassextension</artifactId>
+      	<version>2.3</version>
+      	<scope>test</scope>
+      </dependency>
+      
+      <dependency>
+      	<groupId>cglib</groupId>
+      	<artifactId>cglib-nodep</artifactId>
+      	<version>2.1_3</version>
+      	<scope>test</scope>
+      </dependency>   
+  </dependencies>
 </project>
\ No newline at end of file
diff --git a/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractCollectionAdapter.java b/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractCollectionAdapter.java
index 4a2590b..8865d9e 100755
--- a/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractCollectionAdapter.java
+++ b/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractCollectionAdapter.java
@@ -207,8 +207,8 @@
    * @return
    */
   protected ResponseContext createErrorResponse(ResponseContextException e) {
-    if (log.isInfoEnabled()) {
-      log.info("A ResponseException was thrown.", e);
+    if (log.isDebugEnabled()) {
+      log.debug("A ResponseException was thrown.", e);
     } else if (e.getResponseContext() instanceof EmptyResponseContext
                && ((EmptyResponseContext)e.getResponseContext()).getStatus() >= 500) {
       log.warn("A ResponseException was thrown.", e);
diff --git a/server/src/main/java/org/apache/abdera/protocol/server/impl/DefaultWorkspaceManager.java b/server/src/main/java/org/apache/abdera/protocol/server/impl/DefaultWorkspaceManager.java
index 5613016..d4bceb0 100755
--- a/server/src/main/java/org/apache/abdera/protocol/server/impl/DefaultWorkspaceManager.java
+++ b/server/src/main/java/org/apache/abdera/protocol/server/impl/DefaultWorkspaceManager.java
@@ -32,7 +32,7 @@
   public static final String COLLECTION_ADAPTER_ATTRIBUTE = "collectionProvider";
 
   public CollectionAdapter getCollectionAdapter(RequestContext request) {
-    String path = request.getTargetBasePath() + request.getTargetPath();
+    String path = request.getContextPath() + request.getTargetPath();
     
     // Typically this happens when a Resolver wants to override the CollectionAdapter being used
     CollectionAdapter ca = (CollectionAdapter) request.getAttribute(Scope.REQUEST, COLLECTION_ADAPTER_ATTRIBUTE);
diff --git a/server/src/main/java/org/apache/abdera/protocol/server/impl/RouteManager.java b/server/src/main/java/org/apache/abdera/protocol/server/impl/RouteManager.java
index ebb6b59..b4b2779 100644
--- a/server/src/main/java/org/apache/abdera/protocol/server/impl/RouteManager.java
+++ b/server/src/main/java/org/apache/abdera/protocol/server/impl/RouteManager.java
@@ -154,8 +154,8 @@
         if (!map.containsKey(var) && value != null) {
           map.put(var, value);
         }
-      }
-      return context.getTargetBasePath() + route.expand(getContext(map));
+      }            
+      return context.getContextPath() + route.expand(getContext(map));
     } else {
       return null;
     }
diff --git a/server/src/test/java/org/apache/abdera/protocol/server/test/route/RouteTest.java b/server/src/test/java/org/apache/abdera/protocol/server/test/route/RouteTest.java
index 104147e..8412d38 100755
--- a/server/src/test/java/org/apache/abdera/protocol/server/test/route/RouteTest.java
+++ b/server/src/test/java/org/apache/abdera/protocol/server/test/route/RouteTest.java
@@ -17,6 +17,10 @@
  */
 package org.apache.abdera.protocol.server.test.route;
 
+import static org.easymock.EasyMock.expect;
+import static org.easymock.classextension.EasyMock.createMock;
+import static org.easymock.classextension.EasyMock.replay;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -24,6 +28,10 @@
 
 import org.apache.abdera.i18n.templates.HashMapContext;
 import org.apache.abdera.i18n.templates.Route;
+import org.apache.abdera.protocol.server.RequestContext;
+import org.apache.abdera.protocol.server.Target;
+import org.apache.abdera.protocol.server.context.RequestContextWrapper;
+import org.apache.abdera.protocol.server.impl.RouteManager;
 import org.junit.Test;
 
 public class RouteTest extends Assert {
@@ -168,5 +176,20 @@
     Map<String, String> vars = route.parse("/base/test/");
     assertEquals("test", vars.get("collection"));
   }
+    
+  @Test
+  public void testUrlFor() throws Exception {
+    RouteManager manager = new RouteManager().addRoute(new Route("entry", "/base/:collection/:entry"));
 
+    Target targetMock = createMock(Target.class);
+    expect(targetMock.getParameter("collection")).andReturn("entries");
+    expect(targetMock.getParameter("entry")).andReturn("123");
+    replay(targetMock);
+    RequestContext contextMock = createMock(RequestContextWrapper.class);
+    expect(contextMock.getContextPath()).andReturn("/appBase");
+    expect(contextMock.getTarget()).andReturn(targetMock).times(2);
+    replay(contextMock);
+
+    assertEquals(manager.urlFor(contextMock, "entry", null), "/appBase/base/entries/123");
+  }
 }
