diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponent.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponent.java
index 91e47e190045379693b532ae419f9d84964adffc..3203c2c95cb760eaeb6d09c761ebe0a63ac55f20 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponent.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponent.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.dss.component.impl;
 
 import java.io.InputStream;
+import java.util.List;
 
 import org.springframework.remoting.RemoteAccessException;
 import org.springframework.remoting.RemoteConnectFailureException;
@@ -301,7 +302,7 @@ class AuthenticatedState extends AbstractDssComponentState
     private IDssServiceRpcGeneric basicGetDssServiceForUrl(String serverURL)
     {
         IDssServiceRpcGeneric dssService = null;
-        RpcServiceInterfaceDTO[] ifaces =
+        List<RpcServiceInterfaceDTO> ifaces =
                 dssServiceFactory.getSupportedInterfaces(serverURL, false);
         for (RpcServiceInterfaceDTO iface : ifaces)
         {
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcGeneric.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcGeneric.java
index ff59394f20854be01491063b9b09f17e3da24520..3a918e3c6d18903d25e72c5a652c03ced59947fe 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcGeneric.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcGeneric.java
@@ -84,14 +84,14 @@ public class DssServiceRpcGeneric extends AbstractDssServiceRpc implements IDssS
         }
     }
 
-    public int getMinClientVersion()
+    public int getMajorVersion()
     {
         return 1;
     }
 
-    public int getVersion()
+    public int getMinorVersion()
     {
-        return 1;
+        return 0;
     }
 
     /**
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcNameServer.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcNameServer.java
index 5e94929e45bcd898e90f01db32b187123a9dc2b6..8daefcaf657cebf7466211f9c6049515fac47843 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcNameServer.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcNameServer.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.dss.generic.server;
 
 import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.log4j.Logger;
 
@@ -43,20 +44,19 @@ public class DssServiceRpcNameServer implements IRpcServiceNameServer
         supportedInterfaces = new ArrayList<RpcServiceInterfaceDTO>();
     }
 
-    public RpcServiceInterfaceDTO[] getSupportedInterfaces()
+    public List<RpcServiceInterfaceDTO> getSupportedInterfaces()
     {
-        RpcServiceInterfaceDTO[] ifaces = new RpcServiceInterfaceDTO[supportedInterfaces.size()];
-        return supportedInterfaces.toArray(ifaces);
+        return supportedInterfaces;
     }
 
-    public int getMinClientVersion()
+    public int getMajorVersion()
     {
         return 1;
     }
 
-    public int getVersion()
+    public int getMinorVersion()
     {
-        return 1;
+        return 0;
     }
 
     /**
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/DssServiceRpcFactory.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/DssServiceRpcFactory.java
index 78db076c7d59cf6390e8e06eb3b16aa7f3add177..2acce1abf71e691373b52e6b78de4b77a19a9965 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/DssServiceRpcFactory.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/DssServiceRpcFactory.java
@@ -22,6 +22,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.net.InetSocketAddress;
+import java.util.List;
 
 import org.apache.commons.lang.time.DateUtils;
 import org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor;
@@ -31,7 +32,7 @@ import com.marathon.util.spring.StreamSupportingHttpInvokerProxyFactoryBean;
 import ch.systemsx.cisd.common.spring.HttpInvokerUtils;
 import ch.systemsx.cisd.common.ssl.SslCertificateHelper;
 import ch.systemsx.cisd.openbis.dss.rpc.shared.RpcServiceInterfaceDTO;
-import ch.systemsx.cisd.openbis.dss.rpc.shared.IDssServiceRpc;
+import ch.systemsx.cisd.openbis.dss.rpc.shared.IRpcService;
 import ch.systemsx.cisd.openbis.dss.rpc.shared.IRpcServiceNameServer;
 
 /**
@@ -47,7 +48,7 @@ public class DssServiceRpcFactory implements IDssServiceRpcFactory
 
     private static final String NAME_SERVER_SUFFIX = "/rpc";
 
-    public RpcServiceInterfaceDTO[] getSupportedInterfaces(String serverURL,
+    public List<RpcServiceInterfaceDTO> getSupportedInterfaces(String serverURL,
             boolean getServerCertificateFromServer) throws IncompatibleAPIVersionsException
     {
         // We assume the location of the name server follows the convention
@@ -64,7 +65,7 @@ public class DssServiceRpcFactory implements IDssServiceRpcFactory
         return nameServer.getSupportedInterfaces();
     }
 
-    public <T extends IDssServiceRpc> T getService(RpcServiceInterfaceDTO iface,
+    public <T extends IRpcService> T getService(RpcServiceInterfaceDTO iface,
             Class<T> ifaceClazz, String serverURL, boolean getServerCertificateFromServer)
             throws IncompatibleAPIVersionsException
     {
@@ -101,7 +102,7 @@ public class DssServiceRpcFactory implements IDssServiceRpcFactory
  * @author Chandrasekhar Ramakrishnan
  */
 @SuppressWarnings("unchecked")
-class ServiceProxyBuilder<T extends IDssServiceRpc>
+class ServiceProxyBuilder<T extends IRpcService>
 {
     private final String serviceURL;
 
@@ -124,8 +125,8 @@ class ServiceProxyBuilder<T extends IDssServiceRpc>
     {
         T service = getRawServiceProxy();
         service = wrapProxyInServiceInvocationHandler(service);
-        final int apiServerVersion = service.getVersion();
-        final int apiMinClientVersion = service.getMinClientVersion();
+        final int apiServerVersion = service.getMajorVersion();
+        final int apiMinClientVersion = service.getMinorVersion();
         if (apiClientVersion < apiMinClientVersion || apiClientVersion > apiServerVersion)
         {
             throw new IncompatibleAPIVersionsException(apiClientVersion, apiServerVersion,
@@ -135,7 +136,8 @@ class ServiceProxyBuilder<T extends IDssServiceRpc>
         return service;
     }
 
-    // TODO 2010-04-21, Tomasz Pylak: refactor to use HttpInvokerUtils.createStreamSupportingServiceStub() 
+    // TODO 2010-04-21, Tomasz Pylak: refactor to use
+    // HttpInvokerUtils.createStreamSupportingServiceStub()
     private T getRawServiceProxy()
     {
         final StreamSupportingHttpInvokerProxyFactoryBean httpInvokerProxy =
@@ -171,9 +173,9 @@ class ServiceProxyBuilder<T extends IDssServiceRpc>
      */
     private static final class ServiceInvocationHandler implements InvocationHandler
     {
-        private final IDssServiceRpc service;
+        private final IRpcService service;
 
-        private ServiceInvocationHandler(IDssServiceRpc service)
+        private ServiceInvocationHandler(IRpcService service)
         {
             this.service = service;
         }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/IDssServiceRpcFactory.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/IDssServiceRpcFactory.java
index 2d5a3eeda868ce1555eb99341bd58414628c8b69..0d9fc3f55e90d543f1ff792e574204800e564d7c 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/IDssServiceRpcFactory.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/IDssServiceRpcFactory.java
@@ -16,8 +16,10 @@
 
 package ch.systemsx.cisd.openbis.dss.rpc.client;
 
+import java.util.List;
+
 import ch.systemsx.cisd.openbis.dss.rpc.shared.RpcServiceInterfaceDTO;
-import ch.systemsx.cisd.openbis.dss.rpc.shared.IDssServiceRpc;
+import ch.systemsx.cisd.openbis.dss.rpc.shared.IRpcService;
 
 /**
  * A factory for creating proxies to RPC services on a data store server.
@@ -37,13 +39,13 @@ public interface IDssServiceRpcFactory
      *            shouldGetServerCertificateFromServer is true, the factory will retrieve the SSL
      *            certificate from the server.
      */
-    public abstract RpcServiceInterfaceDTO[] getSupportedInterfaces(String serverURL,
+    public abstract List<RpcServiceInterfaceDTO> getSupportedInterfaces(String serverURL,
             boolean shouldGetServerCertificateFromServer) throws IncompatibleAPIVersionsException;
 
     /**
      * Get get RPC service interface specified by <code>iface</code>.
      */
-    public abstract <T extends IDssServiceRpc> T getService(RpcServiceInterfaceDTO iface,
+    public abstract <T extends IRpcService> T getService(RpcServiceInterfaceDTO iface,
             Class<T> ifaceClazz, String serverURL, boolean getServerCertificateFromServer)
             throws IncompatibleAPIVersionsException;
 }
\ No newline at end of file
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpcGeneric.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpcGeneric.java
index df97ba9cf67cc002a161dc259239e7502bc30ab8..82e20115e40f6402326351a98122f3f57343f8dc 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpcGeneric.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpcGeneric.java
@@ -25,7 +25,7 @@ import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
  * 
  * @author Chandrasekhar Ramakrishnan
  */
-public interface IDssServiceRpcGeneric extends IDssServiceRpc
+public interface IDssServiceRpcGeneric extends IRpcService
 {
     /**
      * Get an array of FileInfoDss objects that describe the file-system structure of the data set.
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpc.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IRpcService.java
similarity index 59%
rename from datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpc.java
rename to datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IRpcService.java
index 470dcceaaa21a0a05fbff2915775af9075a467d0..041a2d9ecfef65f589c2d72c76c694e062001c90 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpc.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IRpcService.java
@@ -17,26 +17,29 @@
 package ch.systemsx.cisd.openbis.dss.rpc.shared;
 
 /**
- * The most generic interface for RPC invocations into DSS.
+ * The most generic interface for RPC invocations into openBIS.
  * <p>
- * This interface defines a minimal interface presented by DSS services. It lets clients determine
+ * This interface defines a minimal interface presented by RPC services. It lets clients determine
  * which version of the interface the server supports. To do anything interesting, clients need to
- * get a reference to a specific interface from the {@link IRpcServiceNameServer}.
+ * get a reference to a specific interface using the {@link IRpcServiceNameServer}.
  * 
  * @author Chandrasekhar Ramakrishnan
  */
-public interface IDssServiceRpc
+public interface IRpcService
 {
     //
     // Protocol versioning
     //
-    /** Returns the version of the server side interface. */
-    public int getVersion();
+    /**
+     * Returns the major version of the server side interface. Different major versions are
+     * incompatible with one another.
+     */
+    public int getMajorVersion();
 
     /**
-     * Returns the minimal version that the client needs to have in order to be able to talk to this
-     * server.
+     * Returns the minor version of this server side interface. Different minor versions, within the
+     * same major version, are compatible with one another.
      */
-    public int getMinClientVersion();
+    public int getMinorVersion();
 
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IRpcServiceNameServer.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IRpcServiceNameServer.java
index 85283be400a21c57fb831daf047059057635f24a..0b1cc7e86d3d5e0d859868773309cefbc9b09cae 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IRpcServiceNameServer.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IRpcServiceNameServer.java
@@ -16,12 +16,14 @@
 
 package ch.systemsx.cisd.openbis.dss.rpc.shared;
 
+import java.util.List;
+
 /**
- * An Interface for finding out about the DssServiceRpc interfaces supported by a server.
+ * An Interface for finding out about the IRpcService interfaces supported by a server.
  * 
  * @author Chandrasekhar Ramakrishnan
  */
-public interface IRpcServiceNameServer extends IDssServiceRpc
+public interface IRpcServiceNameServer extends IRpcService
 {
-    RpcServiceInterfaceDTO[] getSupportedInterfaces();
+    List<RpcServiceInterfaceDTO> getSupportedInterfaces();
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/RpcServiceInterfaceDTO.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/RpcServiceInterfaceDTO.java
index 4622ee4ee981750cb35fe5dc257215de3f5108fe..4efd1c58b12fe00aa633b931f4625c26496a5e31 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/RpcServiceInterfaceDTO.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/RpcServiceInterfaceDTO.java
@@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.dss.rpc.shared;
 import java.io.Serializable;
 
 /**
- * Describes an RPC interface supported by the data store server.
+ * Describes an RPC interface supported by the server.
  * 
  * @author Chandrasekhar Ramakrishnan
  */
@@ -57,7 +57,7 @@ public class RpcServiceInterfaceDTO implements Serializable
     }
 
     /**
-     * The suffix added to the DSS URL to produce the URL for this interface. Used by a service
+     * The suffix added to the server's URL to produce the URL for this interface. Used by a service
      * factory to create a proxy to the service.
      */
     public String getInterfaceUrlSuffix()
diff --git a/datastore_server/source/java/dssApplicationContext.xml b/datastore_server/source/java/dssApplicationContext.xml
index 93ad4687660dd411dfdebd7080d8b55dd9493cc3..1b2cc6ca7c860ff9c31bd3c30baf3fc2318fb8bf 100644
--- a/datastore_server/source/java/dssApplicationContext.xml
+++ b/datastore_server/source/java/dssApplicationContext.xml
@@ -73,7 +73,7 @@
             <bean class="ch.systemsx.cisd.openbis.dss.generic.server.DssServiceRpcNameServer">
             </bean>
         </property>
-        <property name="serviceInterface" value="ch.systemsx.cisd.openbis.dss.rpc.shared.IDssServiceRpcNameServer" />
+        <property name="serviceInterface" value="ch.systemsx.cisd.openbis.dss.rpc.shared.IRpcServiceNameServer" />
     </bean>
     
     <bean id="session-token-manager" class="ch.systemsx.cisd.openbis.dss.generic.server.SessionTokenManager"/>