/* Note: low and high are relative coordinates */
  protected String getResiduesFromSourceImpl(int low, int high) {

    int realStart = low; //  + getRange().getStart();
    int realEnd = high; // + getRange().getStart();

    Hashtable var = new Hashtable();

    //    var.put("bp_start",String.valueOf(new Integer(realStart)));
    //    var.put("bp_end", String.valueOf(new Integer(realEnd)));
    //    var.put("chr",getRange().getName());
    //    var.put("type","basepairs");
    //    var.put("format","fasta");
    //    var.put("region","1");
    //    var.put("btnsubmit","Export");
    //    var.put("tab","fasta");
    // http://dev.ensembl.org:80/perl/exportview?tab=fasta&btnsubmit=Export&format=fasta&region=1&type=basepairs&chr=2&bp_start=123&bp_end=100000

    var.put("vc_start", String.valueOf(new Integer(realStart)));
    var.put("vc_end", String.valueOf(new Integer(realEnd)));
    var.put("chr", getRange().getName());
    var.put("seqonly", "1");
    // http://dev.ensembl.org:80/perl/exportview?tab=fasta&btnsubmit=Export&format=fasta&region=1&type=basepairs&chr=2&bp_start=123&bp_end=100000

    String host = server;
    int port = Config.getCGIPort();
    String cgistr = "perl/apolloview";
    //    String cgistr = "perl/exportview";

    CGI cgi = new CGI(host, port, cgistr, var, System.out);

    cgi.run();

    FastaFile fa = new FastaFile(cgi.getInput(), false);
    Vector seqs = fa.getSeqs();

    if (seqs.size() == 1) {
      System.out.println("Returning sequence");
      return ((SequenceI) seqs.elementAt(0)).getResidues();
    } else {
      System.out.println("Returning null");
      return null;
    }
  }