diff --git a/mutalyzer/templates/base/js/interface.js b/mutalyzer/templates/base/js/interface.js
index be42d8d761caf5f734d48df0d32559bf57c45c1f..fde632138f75e1711a4ea27a1ae588e2d84c412a 100644
--- a/mutalyzer/templates/base/js/interface.js
+++ b/mutalyzer/templates/base/js/interface.js
@@ -3,21 +3,25 @@ function updateVisibility() {
   document.getElementById('url_label').style.display = "none";
   document.getElementById('gene_label').style.display = "none";
   document.getElementById('range_label').style.display = "none";
+  document.getElementById('chrname_label').style.display = "none";
 
   for (i = 0; i < document.invoer.invoermethode.length; i++) {
     if (document.invoer.invoermethode[i].checked) {
       if (document.invoer.invoermethode[i].value == 'file') {
-        file_label.style.display = "";
+          document.getElementById('file_label').style.display = "";
       }
       else if (document.invoer.invoermethode[i].value == 'url') {
-        url_label.style.display = "";
+          document.getElementById('url_label').style.display = "";
       }
       else if (document.invoer.invoermethode[i].value == 'gene') {
-        gene_label.style.display = "";
+          document.getElementById('gene_label').style.display = "";
       }
       else if (document.invoer.invoermethode[i].value == 'chr') {
-        range_label.style.display = "";
-      }                        
+          document.getElementById('range_label').style.display = "";
+      }
+      else if (document.invoer.invoermethode[i].value == 'chrname') {
+          document.getElementById('chrname_label').style.display = "";
+      }
     }//if
   }//for
 }//updateVisibility
@@ -52,7 +56,7 @@ function onloadBatch() {
 function getHTTPObject(){
     if (window.ActiveXObject)
         return new ActiveXObject("Microsoft.XMLHTTP");
-    else if (window.XMLHttpRequest) 
+    else if (window.XMLHttpRequest)
         return new XMLHttpRequest();
     else {
         alert("Your browser does not support AJAX.");
diff --git a/mutalyzer/templates/gbupload.html b/mutalyzer/templates/gbupload.html
index aabd5efebaf6e6978f52ac0639d080468d7dab5e..67381d3edf0713fb315d19e4651a3f64a3bbfc66 100644
--- a/mutalyzer/templates/gbupload.html
+++ b/mutalyzer/templates/gbupload.html
@@ -36,7 +36,10 @@
             Retrieve part of the reference genome for a (HGNC) gene symbol<br>
             <input type="radio" name="invoermethode" value='chr'
                    onClick="updateVisibility();">
-            Retrieve a range of a chromosome<br>
+            Retrieve a range of a chromosome by accession number<br>
+            <input type="radio" name="invoermethode" value='chrname'
+                   onClick="updateVisibility();">
+            Retrieve a range of a chromosome by name<br>
           </td>
         </tr>
         <tr height="20px"></tr>
@@ -80,21 +83,59 @@
               and specify the range</i><br>
               <table>
                 <tr>
-                  <td>Chromosome Accession Number</td>
+                  <td>Chromosome accession number</td>
                   <td><input type='text' name="chracc"></td>
                 </tr>
                 <tr>
-                  <td>Start Position</td>
+                  <td>Start position</td>
                   <td><input type='text' name="start"></td>
                 </tr>
                 <tr>
-                  <td>Stop Position</td>
+                  <td>Stop position</td>
                   <td><input type='text' name="stop"></td>
                 </tr>
                 <tr>
                   <td>Orientation</td>
                   <td>
-                    <select name = "orientation">
+                    <select name="orientation">
+                      <option value="1">Forward</option>
+                      <option value="2">Reverse</option>
+                    </select>
+                  </td>
+                </tr>
+              </table>
+            </span>
+            <span id="chrname_label">
+              <i>Please enter the name of the chromosome
+              and specify the range</i><br>
+              <table>
+                <tr>
+                  <td>Assembly</td>
+                  <td>
+                    <select name="chrnameassembly">
+                      <option tal:repeat = "i available_assemblies"
+                              tal:content = "i"
+                              tal:attributes = "value i">
+                      </option>
+                    </select>
+                  </td>
+                </tr>
+                <tr>
+                  <td>Chromosome name</td>
+                  <td><input type='text' name="chrname"></td>
+                </tr>
+                <tr>
+                  <td>Start position</td>
+                  <td><input type='text' name="chrnamestart"></td>
+                </tr>
+                <tr>
+                  <td>Stop position</td>
+                  <td><input type='text' name="chrnamestop"></td>
+                </tr>
+                <tr>
+                  <td>Orientation</td>
+                  <td>
+                    <select name="chrnameorientation">
                       <option value="1">Forward</option>
                       <option value="2">Reverse</option>
                     </select>
diff --git a/mutalyzer/templates/menu.html b/mutalyzer/templates/menu.html
index 54b7b39d0be1b824fd66bca3563799dd6521295e..38544d0ea6ef7e16e02de91157280af6dd760860 100644
--- a/mutalyzer/templates/menu.html
+++ b/mutalyzer/templates/menu.html
@@ -19,7 +19,7 @@
     <script
       type="text/javascript"
       language="javascript"
-      src="base/js/interface.js">
+      src="base/js/interface.js?20120511">
     </script>
     <script
       type="text/javascript"
diff --git a/mutalyzer/website.py b/mutalyzer/website.py
index 2e70fba7648bc5dd78be13edbdc8172a4c6e157c..2c956243546e6475d8ede439cd7f9516b8edb84e 100644
--- a/mutalyzer/website.py
+++ b/mutalyzer/website.py
@@ -571,6 +571,7 @@ class PositionConverter:
                 'Received request positionConverter(%s, %s) from %s' % (
                 build, variant, IP))
 
+            # Todo: check for correct build.
             converter = Converter(build, output)
 
             #Convert chr accNo to NC number
@@ -1246,11 +1247,13 @@ class Uploader:
         Render reference sequence uploader form.
         """
         maxUploadSize = config.get('maxDldSize')
+        available_assemblies = config.get('dbNames')[::-1]
         UD, errors = "", []
         args = {
-            "UD"      : UD,
-            "maxSize" : float(maxUploadSize) / 1048576,
-            "errors"  : errors
+            'UD'                   : UD,
+            'available_assemblies' : available_assemblies,
+            'maxSize'              : float(maxUploadSize) / 1048576,
+            'errors'               : errors
         }
         return render.gbupload(args)
     #GET
@@ -1264,10 +1267,12 @@ class Uploader:
         1. The reference sequence file is a local file.
         2. The reference sequence file can be found at the following URL.
         3. Retrieve part of the reference genome for a (HGNC) gene symbol.
-        4. Retrieve a range of a chromosome.
+        4. Retrieve a range of a chromosome by accession number.
+        5. Retrieve a range of a chromosome by name.
 
         Parameters:
-        - invoermethode: Input method. One of 'file', 'url', 'gene', 'chr'.
+        - invoermethode: Input method. One of 'file', 'url', 'gene', 'chr',
+          'chrname'.
 
         Depending on the input method, additional parameters are expected.
 
@@ -1288,8 +1293,16 @@ class Uploader:
         - start: Start position.
         - stop: Stop position.
         - orientation: Orientation.
+
+        Parameters (method 'chrname'):
+        - chrnameassembly: Genome assembly (probably 'hg18' or 'hg19').
+        - chrname: Chromosome name.
+        - chrnamestart: Start position.
+        - chrnamestop: Stop position.
+        - chrnameorientation: Orientation.
         """
         maxUploadSize = config.get('maxDldSize')
+        available_assemblies = config.get('dbNames')[::-1]
 
         O = Output(__file__)
         IP = web.ctx["ip"]
@@ -1300,13 +1313,16 @@ class Uploader:
 
         i = web.input(invoermethode='', bestandsveld={}, urlveld='',
                       genesymbol='', organism='', fiveutr='', threeutr='',
-                      chracc='', start='', stop='', orientation='')
+                      chracc='', start='', stop='', orientation='',
+                      chrnameassembly='', chrname='', chrnamestart='',
+                      chrnamestop='', chrnameorientation='')
 
         O.addMessage(__file__, -1, 'INFO',
             'Received request'
-            ' upload(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) from %s' % (
+            ' upload(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) from %s' % (
             i.invoermethode, i.urlveld, i.genesymbol, i.organism, i.fiveutr,
-            i.threeutr, i.chracc, i.start, i.stop, i.orientation, IP))
+            i.threeutr, i.chracc, i.start, i.stop, i.orientation, i.chrnameassembly,
+            i.chrname, i.chrnamestart, i.chrnamestop, i.chrnameorientation, IP))
 
         try:
             if i.invoermethode == "file":
@@ -1347,6 +1363,27 @@ class Uploader:
                 stop = _checkInt(i.stop, "Stop position")
                 orientation = int(i.orientation)
                 UD = R.retrieveslice(accNo, start, stop, orientation)
+            elif i.invoermethode == "chrname":
+                build = i.chrnameassembly
+                name = i.chrname
+                start = _checkInt(i.chrnamestart, "Start position")
+                stop = _checkInt(i.chrnamestop, "Stop position")
+                orientation = int(i.chrnameorientation)
+
+                if build not in available_assemblies:
+                    raise InputException('Assembly not available: %s' % build)
+
+                if not name.startswith('chr'):
+                    name = 'chr%s' % name
+
+                database = Db.Mapping(build)
+                accession = database.chromAcc(name)
+
+                if not accession:
+                    raise InputException('Chromosome not available for build %s: %s' %
+                                         (build, name))
+
+                UD = R.retrieveslice(accession, start, stop, orientation)
             else:
                 #unknown "invoermethode"
                 raise InputException("Wrong method selected")
@@ -1361,15 +1398,17 @@ class Uploader:
                 errors.extend(map(lambda m: str(m), O.getMessages()))
 
         args = {
-            "UD"      : UD,
-            "maxSize" : float(maxUploadSize) / 1048576,
-            "errors"  : errors
+            "UD"                   : UD,
+            'available_assemblies' : available_assemblies,
+            "maxSize"              : float(maxUploadSize) / 1048576,
+            "errors"               : errors
         }
 
         O.addMessage(__file__, -1, 'INFO',
-            'Finished request upload(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)' \
+            'Finished request upload(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)' \
             % (i.invoermethode, i.urlveld, i.genesymbol, i.organism,
-            i.fiveutr, i.threeutr, i.chracc, i.start, i.stop, i.orientation))
+               i.fiveutr, i.threeutr, i.chracc, i.start, i.stop, i.orientation,
+               i.chrnameassembly, i.chrname, i.chrnamestart, i.chrnamestop, i.chrnameorientation))
 
         return render.gbupload(args)
     #POST