diff --git a/README.md b/README.md
index 04c9e2fe138b949ff612fb1e99e52ebdd7a2d424..2ab26ac457da97f29c843eb24f8ad41f9d91d725 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@ LODSPeaKr
 
 author: Alvaro Graves (alvaro@graves.cl)
 
-version: 20121218
+version: 20130206
 
 
 [LODSPeaKr](http://lodspeakr.org) is a framework for creating Linked Data applications in a simple and easy way. You can see [several applications](http://alangrafu.github.com/lodspeakr/applications.html) created using LODSPeaKr.
diff --git a/classes/modules/serviceModule.php b/classes/modules/serviceModule.php
index e7630b415b22179e7c908bf29294790763e3c314..a39742242e90a29d83caba1d08384ae62d929a2f 100644
--- a/classes/modules/serviceModule.php
+++ b/classes/modules/serviceModule.php
@@ -15,45 +15,54 @@ class ServiceModule extends abstractModule{
   	  return FALSE;
   	}
 
-  	//Use .extension at the end of the service to force a particular content type
-  	if(strpos($qArr[0], '.')>0){
-  	  $aux = explode(".", $qArr[0]);
-  	  if(isset($aux[1])){
-  	    $contentTypes = $conf['http_accept'][$aux[1]];
-  	    if($contentTypes == null){
-  	      HTTPStatus::send406("Content type not acceptable\n");
-  	    }
-  	    $acceptContentType = $contentTypes[0];
-  	  }
-  	  $qArr[0] = $aux[0];
-  	}
 
   	$extension = Utils::getExtension($acceptContentType);
   	$viewFile  = null;
-  	$lodspk['model'] = $conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$qArr[0].'/';
-  	$lodspk['view'] = $conf['view']['directory'].'/'.$conf['service']['prefix'].'/'.$qArr[0].'/'.$extension.'.template';
-  	$lodspk['serviceName'] = $qArr[0];
-  	$lodspk['componentName'] = $qArr[0];
-  	$modelFile = $lodspk['model'].$extension.'.queries';
-  	if(file_exists($lodspk['model'].$extension.'.queries')){
-  	  if(!file_exists($lodspk['view'])){
-  	  	$viewFile = null;
-  	  }else{
-  	  	$viewFile = $lodspk['view'];
+  	$tokens = $qArr;
+  	while(sizeof($tokens) > 0){
+  	  $serviceName = join("%2F", $tokens);
+  	  //Use .extension at the end of the service to force a particular content type
+  	  $lastSegment = end($tokens);
+  	  if(strpos($lastSegment, '.')>0){
+  	    $aux = explode(".", $lastSegment);
+  	    if(sizeof($aux)>1){
+  	      $requestExtension = array_pop($aux);
+  	      $contentTypes = $conf['http_accept'][$requestExtension];
+  	      if($contentTypes != null){
+  	        $acceptContentType = $contentTypes[0];
+  	        $extension = $requestExtension;
+  	      }
+  	    }
+  	    $serviceName = join(".",$aux);
   	  }
-  	  return array($modelFile, $viewFile);
-  	}elseif(file_exists($lodspk['model'].'queries')){
- 	  $modelFile = $lodspk['model'].'queries';
-  	  if(!file_exists($lodspk['view'])){
-  	  	$lodspk['resultRdf'] = true;
-  	  	$viewFile = null;
-  	  }else{
-  	  	$viewFile = $lodspk['view'];
+  	  
+  	  
+  	  $lodspk['model'] = $conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/';
+  	  $lodspk['view'] = $conf['view']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'.$extension.'.template';
+  	  $lodspk['serviceName'] = join("/", $tokens);
+  	  $lodspk['componentName'] = $lodspk['serviceName'];
+  	  $modelFile = $lodspk['model'].$extension.'.queries';
+  	  if(file_exists($lodspk['model'].$extension.'.queries')){
+  	    if(!file_exists($lodspk['view'])){
+  	      $viewFile = null;
+  	    }else{
+  	      $viewFile = $lodspk['view'];
+  	    }
+  	    return array($modelFile, $viewFile);
+  	  }elseif(file_exists($lodspk['model'].'queries')){
+  	    $modelFile = $lodspk['model'].'queries';
+  	    if(!file_exists($lodspk['view'])){
+  	      $lodspk['resultRdf'] = true;
+  	      $viewFile = null;
+  	    }else{
+  	      $viewFile = $lodspk['view'];
+  	    }
+  	    return array($modelFile, $viewFile);
+  	  }elseif(file_exists($lodspk['model'])){
+  	    HTTPStatus::send406($uri);
+  	    exit(0);
   	  }
-  	  return array($modelFile, $viewFile);
-  	}elseif(file_exists($lodspk['model'])){
-  	  HTTPStatus::send406($uri);
-  	  exit(0);
+  	  array_pop($tokens);
   	}
   	return FALSE;  
   }
@@ -69,7 +78,7 @@ class ServiceModule extends abstractModule{
   	$context = array();
   	$context['contentType'] = $acceptContentType;
   	$context['endpoints'] = $endpoints;
-  	$f = $this->getFunction($localUri);
+  	//$f = $this->getFunction($localUri);
   	$params = array();
   	$params = $this->getParams($localUri);
   	//$params[] = $context;
@@ -158,20 +167,22 @@ class ServiceModule extends abstractModule{
   }
   
   
-  protected function getFunction($uri){
+  /*protected function getFunction($uri){
   	global $conf;
   	$count = 1;
   	$prefixUri = $conf['basedir'];
   	$aux = str_replace($prefixUri, '', $uri, $count);
   	$functionAndParams = explode('/', $aux);
   	return $functionAndParams[0];
-  }
+  }*/
   
   protected function getParams($uri){
   	global $conf;
+  	global $lodspk;
   	$count = 1;
   	$prefixUri = $conf['basedir'];
-  	$functionAndParams = explode('/', str_replace($prefixUri, '', $uri, $count));
+//  	echo $prefixUri.$lodspk['serviceName'];exit(0);
+  	$functionAndParams = explode('/', str_replace($prefixUri.$lodspk['serviceName'], '', $uri, $count));
   	if(sizeof($functionAndParams) > 1){
   	  array_shift($functionAndParams);
   	  return $functionAndParams;
diff --git a/common.inc.php b/common.inc.php
index 7abefeaff01d467a4feea2bc60317fc1b40af626..0dbb2048a6d7b03ac32a19bbe33b8f8b7c208c52 100644
--- a/common.inc.php
+++ b/common.inc.php
@@ -1,6 +1,6 @@
 <?php
 
-$conf['version'] = '20121218';
+$conf['version'] = '20130206';
 $conf['output']['select'] = 'json';
 $conf['output']['ask'] = 'json';
 $conf['output']['describe'] = 'rdf';
diff --git a/utils/modules/create-service.sh b/utils/modules/create-service.sh
index e0ccfb934c9f2372abcd99fac2835d3411ee8942..fb97abf8b8525ee7ff4c591dcd34f0e2ba725a79 100755
--- a/utils/modules/create-service.sh
+++ b/utils/modules/create-service.sh
@@ -4,12 +4,14 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
 initToken='services'
 cd $DIR
+
+serviceName=${1/\//%2F}
 #Check models
-mainDir=$DIR/../../components/$initToken/$1/
+mainDir=$DIR/../../components/$initToken/$serviceName/
 
 if [ -e "$mainDir" ]
 then
-  echo "ERROR: This service $1 already exists." >&2
+  echo "ERROR: This service $serviceName already exists." >&2
   exit 1
 else
   mkdir -p $mainDir
@@ -17,4 +19,4 @@ fi
 
 cp -rf ../defaults/service/* $mainDir/
 
-echo $initToken.$1 created/modified successfully! >&2
+echo $initToken.$serviceName created/modified successfully! >&2
diff --git a/utils/modules/delete-service.sh b/utils/modules/delete-service.sh
index a496c7bbff58d53c29f4ee788fb6ce8c129fca8f..f36b9100637d52af03da7d8d3ca055ae5c029023 100755
--- a/utils/modules/delete-service.sh
+++ b/utils/modules/delete-service.sh
@@ -4,16 +4,18 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
 initToken='services'
 
+serviceName=${1/\//%2F}
+
 
 #Check models
-mainDir=$DIR/../../components/$initToken/$1
+mainDir=$DIR/../../components/$initToken/$serviceName
 
 if [ ! -e "$mainDir" ]
 then
-  echo "ERROR: $initToken/	$1 doesn't exist in models. Operation aborted" >&2
+  echo "ERROR: $initToken/	$serviceName doesn't exist in models. Operation aborted" >&2
   exit 1
 fi
 
 rm -rf $mainDir
 
-echo Service $1 deleted >&2
+echo Service $serviceName deleted >&2