Repository: GMOD/jbrowse-jupyter (language: python)

Issue:
fix readme
* more updates to the readme


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml
index b651262..e7a7a5b 100644
--- a/.github/workflows/push.yml
+++ b/.github/workflows/push.yml
@@ -11,7 +11,7 @@ jobs:
          python-version: '3.6'
      - name: Install dependencies
        run: |
-         python -m pip install --upgrade pip
+         python3 -m pip install --upgrade pip
          pip install -r requirements.txt
      - name: Lint with flake8
        run: |
@@ -28,7 +28,7 @@ jobs:
          python-version: '3.6'
      - name: Install dependencies
        run: |
-         python -m pip install --upgrade pip
+         python3 -m pip install --upgrade pip
          pip install -r requirements.txt
      - name: Test with pytest
        run: |
diff --git a/.gitignore b/.gitignore
index 0d2a16c..4de0fc7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -130,3 +130,6 @@ dmypy.json
 
 
 .vscode
+
+GRCh37_latest_genomic.sort.gff.gz
+GRCh37_latest_genomic.sort.gff.gz.tbi
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 7f4d8be..acc9754 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -11,8 +11,8 @@ $ cd jbrowse-jupyter
 ```
 2. Create a conda environment and install the dependencies
 ```
-$ conda create -n myenv python=3.6
-$ source avtivate myenv
+$ conda create -n myenv
+$ source activate myenv
 $ python -m pip install -r requirements.txt
 ```
 This command will create a conda env with python 3.6. 
@@ -69,7 +69,7 @@ You should see a requirements.txt,a Makefile, a make.bat file, the source/ direc
 
 1. Create an environment and install the dependencies.
 ```
-$ conda create -n myenv python=3.6
+$ conda create -n myenv
 $ source activate myenv
 $ python -m pip install -r requirements.txt
 ```
diff --git a/README.md b/README.md
index c8ae7f9..b277926 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 ![Pytest and flake8](https://github.com/GMOD/jbrowse-jupyter/actions/workflows/push.yml/badge.svg)
 [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/GMOD/jbrowse-jupyter/blob/main/browser.ipynb)
-[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/GMOD/jbrowse-jupyter/04b89d20fff202efdcda50f4e0a06471e2536dc3?urlpath=lab%2Ftree%2Fbinder%2Fbinder.ipynb)
-
+[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/GMOD/jbrowse-jupyter/4ace1180f633eb5a6179c6e4f53fdbd8a436cd1e?urlpath=lab%2Ftree%2Fbinder%2Fbinder.ipynb)
+[![Downloads](https://pepy.tech/badge/jbrowse-jupyter)](https://pepy.tech/project/jbrowse-jupyter)
 
 # [JBrowse Jupyter](https://gmod.github.io/jbrowse-jupyter/)
 
@@ -52,7 +52,7 @@ Clone this repository and [install conda](https://docs.conda.io/projects/conda/e
 to create a conda envirnment and install the dependecies.
 ```
 $ cd jbrowse-jupyter
-$ conda create -n myenv python=3.6
+$ conda create -n myenv
 $ conda activate myenv
 $ pip install -r requirements.txt
 ```
@@ -91,7 +91,7 @@ if __name__ == "__main__":
     
 ```
 
-## using jupyter-server-proxy
+### Using jupyter-server-proxy
 
 or using the [jupyter-server-proxy extension](https://github.com/jupyterhub/jupyter-server-proxy)
 and the [jupyter-dash extension](https://github.com/plotly/jupyter-dash)
@@ -144,20 +144,20 @@ You can customize the Linear Genome View by modifying the `jbrowse_conf`. The `j
 
 Find more information about the JBrowseConfig API [here](https://gmod.github.io/jbrowse-jupyter/docs/html/index.html)
 
-### Other Examples
+## Other Examples
 
 You can find examples in the root of this repo, 
 * `browser.py` - uses the Dash library to create a python application with the Dash JBrowse LinearGenomeView component
 * `browser.ipynb` - jupyter notebook using the JupyterDash library to embed a Dash JBrowse LinearGenomeView component in a cell
 * `cgv_examples.py` - uses the Dash library to create a python application with the Dash JBrowse CircularGenomeView component
 * `cgv_examples.ipynb` - jupyter notebook using the JupyterDash library to embed a Dash JBrowse CircularGenomeView component in a cell
+* `local_support.ipynb` - jupyter notebook with tutorial on using your local data and passing it to JBrowse views
 
-
-#### To run the Python Dash application
+### To run the Python Dash application
 ```
 $ python browser.py
 ```
-#### To run the jupyter notebook
+### To run the jupyter notebook
 
 Make sure you have [jupyter notebook or jupyterlab](https://jupyter.org/install).
 
@@ -223,6 +223,9 @@ JBrowseConfig().
         * index (str) – (optional) index file for the track
         * track_type (str) – (optional) track type. If none is passed, the api will infer one based on the file type
         * overwrite (boolean) – (optional) overwrites existing track if it exists in list of tracks (default False)
+* `delete_track`(track_id)
+    - params:
+        * track_id (str) - trackId for the track to delete
 * `set_location`(location)
     - initial location for when the browser first loads, syntax 'refName:start-end' 
     - e.g 'chrom1:500-1000'
@@ -245,6 +248,56 @@ JBrowseConfig().
 
 ![Circular Genome View Gif](https://user-images.githubusercontent.com/45598764/152484043-aeff48b5-a1f2-44f2-b7d9-131c2afd4e1a.gif)
 
+
+
+### Local file support
+We currently support two ways of passing your local data to JBrowse Views.
+
+For our Jupyter users, you can leverage the Jupyter server to host your files and pass those urls to the JBrowse views. You can find a detailed example in our local_support.ipynb
+
+For those using colab notebooks,binder, jupyter and more you can use the JBrowse dev server.
+
+#### JBrowse dev server
+We also provide a simple http server configured with CORS that will allow you to serve your local files from a specified directory within your machine.
+
+> **_Note__** that the use of local files or the dev server provided is not recommended for production environments. 
+
+You can spin the dev server in two ways.
+1. Git clone this repo
+2. From the root of this repository, you will be able to run the python file named `serve.py`
+```$ python serve.py```
+3. You can choose your own port, host, and directory from which to serve your files. You can also press enter to choose all the defaults. 
+  - Default PORT: 8080
+  - Default host: localhost
+  - Default directory: the current working directory -> os.getcwd() is used
+
+4. Now that the dev server is running you can use the url provided in the terminal to pass to your views. 
+- For example: the url to the data you wish to pass to the JBrowse view config for the local dev server running on port 8080 on local host will look like this "http://localhost:8080/<your-file-name>"
+e.g `jbrowse_conf.add_track("http://localhost:8080/<your-file-name>", name="test-demo")`
+
+Or you can make your own python file and run it to start the server.
+
+1. create a python file named dev_server.py and add the code below
+
+```
+import os
+from jbrowse_jupyter import serve
+
+
+if __name__ == "__main__":
+    serve(os.getcwd(), port=8080, host='localhost')
+```
+2. Run the python file
+`$ python dev_server.py`
+
+3. This will spin up a python simple http server with cors enabled. You can take a look at our implementation of our dev server here: `jbrowse_jupyter/dev_server.py`
+
+4. Now that the dev server is running you can use the url provided in the terminal to pass to your views. 
+- For example: the url to the data you wish to pass to the JBrowse view config for the local dev server running on port 8080 on local host will look like this "http://localhost:8080/<your-file-name>"
+e.g `jbrowse_conf.add_track("http://localhost:8080/<your-file-name>", name="test-demo")`
+
+
+
 ## Resources
 * [JBrowse](https://jbrowse.org/jb2/) - the next generation genome browser
 * [JBrowse React Linear Genome View](https://www.npmjs.com/package/@jbrowse/react-linear-genome-view) - interactive genome browser
@@ -299,3 +352,13 @@ We **really** love talking to our users. Please reach out with any thoughts you
 * How do I set a custom color theme palette to fit with my application?
     - You can customize the color palette of the component through the use of `set_theme` function from the JBrowseConfig API. Below is an image of an LGV with a custom color palette. 
 ![Custom Palette](https://github.com/GMOD/jbrowse-jupyter/raw/main/images/custom_palette.png)
+
+* Can I use local files/my own data?
+    - Yes, there are a couple of ways in which you can configure and use your own data from your local environment in jbrowse views. 
+        1. Make use of the jupyter notebook/lab server. Intended for those running their notebooks with jupyter lab or jupyter notebook.
+        2. Launch your own http server with CORS which will enable you to use local files. You can run our serve.py to launch our dev server. 
+    (Checkout our local_support.ipynb for tutorials on how to use your own data)
+
+**_Note_:** that these solutions are recommended for your development environments and not supported in production.
+* I am running a colab notebook/binder notebook and wish to use my local data, how can I do this? 
+    - You can run JBrowse dev server to serve local files to use in your JBrowse views. More information on the dev server can be found in the local file support section of this readme.
diff --git a/browser.ipynb b/browser.ipynb
index 42e9b36..f8a9e80 100644
--- a/browser.ipynb
+++ b/browser.ipynb
@@ -9,108 +9,102 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "Collecting git+https://github.com/GMOD/jbrowse-jupyter.git@main\n",
-      "  Cloning https://github.com/GMOD/jbrowse-jupyter.git (to revision main) to /private/var/folders/96/hq94_1qd3c9_q87bwqhg05s80000gn/T/pip-req-build-emfgm9s3\n",
-      "  Running command git clone --filter=blob:none -q https://github.com/GMOD/jbrowse-jupyter.git /private/var/folders/96/hq94_1qd3c9_q87bwqhg05s80000gn/T/pip-req-build-emfgm9s3\n",
-      "  Resolved https://github.com/GMOD/jbrowse-jupyter.git to commit 5a7a753cf3ada2d028992c67ed305e0ea575555b\n",
-      "  Preparing metadata (setup.py) ... \u001b[?25ldone\n",
-      "\u001b[?25hCollecting dash==2.0.0\n",
-      "  Using cached dash-2.0.0-py3-none-any.whl (7.3 MB)\n",
-      "Collecting dash-jbrowse>=1.0.1\n",
-      "  Using cached dash_jbrowse-1.0.1-py3-none-any.whl (1.1 MB)\n",
-      "Requirement already satisfied: flake8>=4.0.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jbrowse-jupyter==1.2.1) (4.0.1)\n",
-      "Requirement already satisfied: jupyter_dash>=0.4.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jbrowse-jupyter==1.2.1) (0.4.0)\n",
-      "Requirement already satisfied: pandas>=1.1.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jbrowse-jupyter==1.2.1) (1.4.0)\n",
-      "Requirement already satisfied: pytest>=6.2.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jbrowse-jupyter==1.2.1) (6.2.5)\n",
-      "Requirement already satisfied: dash-table==5.0.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.0.0->jbrowse-jupyter==1.2.1) (5.0.0)\n",
-      "Requirement already satisfied: flask-compress in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.0.0->jbrowse-jupyter==1.2.1) (1.10.1)\n",
-      "Requirement already satisfied: dash-core-components==2.0.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.0.0->jbrowse-jupyter==1.2.1) (2.0.0)\n",
-      "Requirement already satisfied: plotly>=5.0.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.0.0->jbrowse-jupyter==1.2.1) (5.3.1)\n",
-      "Requirement already satisfied: dash-html-components==2.0.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.0.0->jbrowse-jupyter==1.2.1) (2.0.0)\n",
-      "Requirement already satisfied: Flask>=1.0.4 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.0.0->jbrowse-jupyter==1.2.1) (1.1.2)\n",
-      "Requirement already satisfied: pycodestyle<2.9.0,>=2.8.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from flake8>=4.0.1->jbrowse-jupyter==1.2.1) (2.8.0)\n",
-      "Requirement already satisfied: mccabe<0.7.0,>=0.6.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from flake8>=4.0.1->jbrowse-jupyter==1.2.1) (0.6.1)\n",
-      "Requirement already satisfied: pyflakes<2.5.0,>=2.4.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from flake8>=4.0.1->jbrowse-jupyter==1.2.1) (2.4.0)\n",
-      "Requirement already satisfied: ipykernel in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (5.3.4)\n",
-      "Requirement already satisfied: ansi2html in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (1.6.0)\n",
-      "Requirement already satisfied: retrying in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (1.3.3)\n",
-      "Requirement already satisfied: requests in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (2.24.0)\n",
-      "Requirement already satisfied: ipython in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (7.19.0)\n",
-      "Requirement already satisfied: python-dateutil>=2.8.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pandas>=1.1.5->jbrowse-jupyter==1.2.1) (2.8.1)\n",
-      "Requirement already satisfied: numpy>=1.18.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pandas>=1.1.5->jbrowse-jupyter==1.2.1) (1.19.2)\n",
-      "Requirement already satisfied: pytz>=2020.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pandas>=1.1.5->jbrowse-jupyter==1.2.1) (2020.1)\n",
-      "Requirement already satisfied: packaging in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter==1.2.1) (20.4)\n",
-      "Requirement already satisfied: iniconfig in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter==1.2.1) (1.1.1)\n",
-      "Requirement already satisfied: attrs>=19.2.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter==1.2.1) (20.3.0)\n",
-      "Requirement already satisfied: py>=1.8.2 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter==1.2.1) (1.9.0)\n",
-      "Requirement already satisfied: toml in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter==1.2.1) (0.10.1)\n",
-      "Requirement already satisfied: pluggy<2.0,>=0.12 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter==1.2.1) (0.13.1)\n",
-      "Requirement already satisfied: click>=5.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.0.0->jbrowse-jupyter==1.2.1) (7.1.2)\n",
-      "Requirement already satisfied: itsdangerous>=0.24 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.0.0->jbrowse-jupyter==1.2.1) (1.1.0)\n",
-      "Requirement already satisfied: Jinja2>=2.10.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.0.0->jbrowse-jupyter==1.2.1) (2.11.2)\n",
-      "Requirement already satisfied: Werkzeug>=0.15 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.0.0->jbrowse-jupyter==1.2.1) (2.0.2)\n",
-      "Requirement already satisfied: tenacity>=6.2.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from plotly>=5.0.0->dash==2.0.0->jbrowse-jupyter==1.2.1) (8.0.1)\n",
-      "Requirement already satisfied: six in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from plotly>=5.0.0->dash==2.0.0->jbrowse-jupyter==1.2.1) (1.16.0)\n",
-      "Requirement already satisfied: brotli in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from flask-compress->dash==2.0.0->jbrowse-jupyter==1.2.1) (1.0.9)\n",
-      "Requirement already satisfied: appnope in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipykernel->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (0.1.0)\n",
-      "Requirement already satisfied: tornado>=4.2 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipykernel->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (6.0.4)\n",
-      "Requirement already satisfied: jupyter-client in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipykernel->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (6.1.7)\n",
-      "Requirement already satisfied: traitlets>=4.1.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipykernel->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (5.1.1)\n",
-      "Requirement already satisfied: pygments in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (2.7.2)\n",
-      "Requirement already satisfied: decorator in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (4.4.2)\n",
-      "Requirement already satisfied: setuptools>=18.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (59.2.0)\n",
-      "Requirement already satisfied: backcall in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (0.2.0)\n",
-      "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (3.0.8)\n",
-      "Requirement already satisfied: jedi>=0.10 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (0.17.1)\n",
-      "Requirement already satisfied: pexpect>4.3 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (4.8.0)\n",
-      "Requirement already satisfied: pickleshare in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (0.7.5)\n",
-      "Requirement already satisfied: pyparsing>=2.0.2 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from packaging->pytest>=6.2.5->jbrowse-jupyter==1.2.1) (2.4.7)\n",
-      "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from requests->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (1.25.11)\n",
-      "Requirement already satisfied: idna<3,>=2.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from requests->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (2.10)\n",
-      "Requirement already satisfied: certifi>=2017.4.17 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from requests->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (2020.6.20)\n",
-      "Requirement already satisfied: chardet<4,>=3.0.2 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from requests->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (3.0.4)\n",
-      "Requirement already satisfied: parso<0.8.0,>=0.7.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jedi>=0.10->ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (0.7.0)\n",
-      "Requirement already satisfied: MarkupSafe>=0.23 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from Jinja2>=2.10.1->Flask>=1.0.4->dash==2.0.0->jbrowse-jupyter==1.2.1) (2.0.1)\n",
-      "Requirement already satisfied: ptyprocess>=0.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pexpect>4.3->ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (0.6.0)\n",
-      "Requirement already satisfied: wcwidth in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (0.2.5)\n",
-      "Requirement already satisfied: pyzmq>=13 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter-client->ipykernel->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (19.0.2)\n",
-      "Requirement already satisfied: jupyter-core>=4.6.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter-client->ipykernel->jupyter_dash>=0.4.0->jbrowse-jupyter==1.2.1) (4.6.3)\n",
-      "Building wheels for collected packages: jbrowse-jupyter\n",
-      "  Building wheel for jbrowse-jupyter (setup.py) ... \u001b[?25ldone\n",
-      "\u001b[?25h  Created wheel for jbrowse-jupyter: filename=jbrowse_jupyter-1.2.1-py3-none-any.whl size=23012 sha256=dc06962e969611682d804c0be04df525f0ddaf4de081e7ff81ca334a6ad8ef75\n",
-      "  Stored in directory: /private/var/folders/96/hq94_1qd3c9_q87bwqhg05s80000gn/T/pip-ephem-wheel-cache-_0jqacx4/wheels/a5/b8/b6/451f32abe96728b448365b4289261b6a436d79dd1ace71c4f1\n",
-      "Successfully built jbrowse-jupyter\n",
-      "Installing collected packages: dash, dash-jbrowse, jbrowse-jupyter\n",
-      "  Attempting uninstall: dash\n",
-      "    Found existing installation: dash 2.1.0\n",
-      "    Uninstalling dash-2.1.0:\n",
-      "      Successfully uninstalled dash-2.1.0\n",
-      "  Attempting uninstall: dash-jbrowse\n",
-      "    Found existing installation: dash-jbrowse 1.0.0\n",
-      "    Uninstalling dash-jbrowse-1.0.0:\n",
-      "      Successfully uninstalled dash-jbrowse-1.0.0\n",
-      "Successfully installed dash-2.0.0 dash-jbrowse-1.0.1 jbrowse-jupyter-1.2.1\n",
-      "\u001b[33mWARNING: You are using pip version 21.3.1; however, version 22.0.3 is available.\n",
-      "You should consider upgrading via the '/Users/teresamartinez/opt/anaconda3/bin/python -m pip install --upgrade pip' command.\u001b[0m\n"
+      "Requirement already satisfied: jbrowse-jupyter in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (1.2.9)\n",
+      "Requirement already satisfied: pandas>=1.1.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jbrowse-jupyter) (1.4.0)\n",
+      "Requirement already satisfied: Werkzeug==2.0.3 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jbrowse-jupyter) (2.0.3)\n",
+      "Requirement already satisfied: pytest>=6.2.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jbrowse-jupyter) (6.2.5)\n",
+      "Requirement already satisfied: jupyter-dash>=0.4.2 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jbrowse-jupyter) (0.4.2)\n",
+      "Requirement already satisfied: dash==2.3.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jbrowse-jupyter) (2.3.0)\n",
+      "Requirement already satisfied: dash-jbrowse>=1.0.4 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jbrowse-jupyter) (1.1.0)\n",
+      "Requirement already satisfied: dash-table==5.0.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (5.0.0)\n",
+      "Requirement already satisfied: dash-html-components==2.0.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (2.0.0)\n",
+      "Requirement already satisfied: plotly>=5.0.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (5.3.1)\n",
+      "Requirement already satisfied: dash-core-components==2.0.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (2.0.0)\n",
+      "Requirement already satisfied: Flask>=1.0.4 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (1.1.2)\n",
+      "Requirement already satisfied: flask-compress in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (1.10.1)\n",
+      "Requirement already satisfied: ipython in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (7.19.0)\n",
+      "Requirement already satisfied: retrying in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (1.3.3)\n",
+      "Requirement already satisfied: ipykernel in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (5.3.4)\n",
+      "Requirement already satisfied: requests in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (2.24.0)\n",
+      "Requirement already satisfied: ansi2html in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (1.6.0)\n",
+      "Requirement already satisfied: nest-asyncio in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (1.4.2)\n",
+      "Requirement already satisfied: numpy>=1.18.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pandas>=1.1.5->jbrowse-jupyter) (1.19.2)\n",
+      "Requirement already satisfied: python-dateutil>=2.8.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pandas>=1.1.5->jbrowse-jupyter) (2.8.1)\n",
+      "Requirement already satisfied: pytz>=2020.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pandas>=1.1.5->jbrowse-jupyter) (2020.1)\n",
+      "Requirement already satisfied: toml in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (0.10.1)\n",
+      "Requirement already satisfied: pluggy<2.0,>=0.12 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (0.13.1)\n",
+      "Requirement already satisfied: attrs>=19.2.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (20.3.0)\n",
+      "Requirement already satisfied: iniconfig in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (1.1.1)\n",
+      "Requirement already satisfied: packaging in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (20.4)\n",
+      "Requirement already satisfied: py>=1.8.2 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (1.9.0)\n",
+      "Requirement already satisfied: itsdangerous>=0.24 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.3.0->jbrowse-jupyter) (1.1.0)\n",
+      "Requirement already satisfied: click>=5.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.3.0->jbrowse-jupyter) (7.1.2)\n",
+      "Requirement already satisfied: Jinja2>=2.10.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.3.0->jbrowse-jupyter) (2.11.2)\n",
+      "Requirement already satisfied: tenacity>=6.2.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from plotly>=5.0.0->dash==2.3.0->jbrowse-jupyter) (8.0.1)\n",
+      "Requirement already satisfied: six in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from plotly>=5.0.0->dash==2.3.0->jbrowse-jupyter) (1.16.0)\n",
+      "Requirement already satisfied: brotli in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from flask-compress->dash==2.3.0->jbrowse-jupyter) (1.0.9)\n",
+      "Requirement already satisfied: tornado>=4.2 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (6.1)\n",
+      "Requirement already satisfied: traitlets>=4.1.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (5.1.1)\n",
+      "Requirement already satisfied: jupyter-client in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (6.1.7)\n",
+      "Requirement already satisfied: appnope in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.1.0)\n",
+      "Requirement already satisfied: pickleshare in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.7.5)\n",
+      "Requirement already satisfied: backcall in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.2.0)\n",
+      "Requirement already satisfied: pexpect>4.3 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (4.8.0)\n",
+      "Requirement already satisfied: pygments in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (2.7.2)\n",
+      "Requirement already satisfied: decorator in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (4.4.2)\n",
+      "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (3.0.8)\n",
+      "Requirement already satisfied: jedi>=0.10 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.17.1)\n",
+      "Requirement already satisfied: setuptools>=18.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (59.2.0)\n",
+      "Requirement already satisfied: pyparsing>=2.0.2 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from packaging->pytest>=6.2.5->jbrowse-jupyter) (2.4.7)\n",
+      "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from requests->jupyter-dash>=0.4.2->jbrowse-jupyter) (1.25.11)\n",
+      "Requirement already satisfied: idna<3,>=2.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from requests->jupyter-dash>=0.4.2->jbrowse-jupyter) (2.10)\n",
+      "Requirement already satisfied: certifi>=2017.4.17 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from requests->jupyter-dash>=0.4.2->jbrowse-jupyter) (2020.6.20)\n",
+      "Requirement already satisfied: chardet<4,>=3.0.2 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from requests->jupyter-dash>=0.4.2->jbrowse-jupyter) (3.0.4)\n",
+      "Requirement already satisfied: parso<0.8.0,>=0.7.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jedi>=0.10->ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.7.0)\n",
+      "Requirement already satisfied: MarkupSafe>=0.23 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from Jinja2>=2.10.1->Flask>=1.0.4->dash==2.3.0->jbrowse-jupyter) (2.0.1)\n",
+      "Requirement already satisfied: ptyprocess>=0.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pexpect>4.3->ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.6.0)\n",
+      "Requirement already satisfied: wcwidth in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.2.5)\n",
+      "Requirement already satisfied: pyzmq>=13 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter-client->ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (19.0.2)\n",
+      "Requirement already satisfied: jupyter-core>=4.6.0 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from jupyter-client->ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (4.6.3)\n",
+      "\u001b[33mWARNING: You are using pip version 22.0.4; however, version 22.2.2 is available.\n",
+      "You should consider upgrading via the '/Users/teresamartinez/opt/anaconda3/bin/python3 -m pip install --upgrade pip' command.\u001b[0m\u001b[33m\n",
+      "\u001b[0m"
      ]
     }
    ],
    "source": [
-    "!pip install git+https://github.com/GMOD/jbrowse-jupyter.git@main"
+    "# For its use in colab notebook\n",
+    "!pip install jbrowse-jupyter"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 2,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Requirement already satisfied: pandas in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (1.4.0)\n",
+      "Requirement already satisfied: numpy>=1.18.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pandas) (1.19.2)\n",
+      "Requirement already satisfied: pytz>=2020.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pandas) (2020.1)\n",
+      "Requirement already satisfied: python-dateutil>=2.8.1 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from pandas) (2.8.1)\n",
+      "Requirement already satisfied: six>=1.5 in /Users/teresamartinez/opt/anaconda3/lib/python3.8/site-packages (from python-dateutil>=2.8.1->pandas) (1.16.0)\n",
+      "\u001b[33mWARNING: You are using pip version 22.0.4; however, version 22.2.2 is available.\n",
+      "You should consider upgrading via the '/Users/teresamartinez/opt/anaconda3/bin/python3 -m pip install --upgrade pip' command.\u001b[0m\u001b[33m\n",
+      "\u001b[0m"
+     ]
+    }
+   ],
    "source": [
+    "# For its use in colab notebook\n",
     "!pip install pandas"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -120,7 +114,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 4,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -129,7 +123,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 5,
    "metadata": {},
    "outputs": [
     {
@@ -157,7 +151,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 6,
    "metadata": {},
    "outputs": [
     {
@@ -170,11 +164,12 @@
        "            src=\"http://127.0.0.1:3003/\"\n",
        "            frameborder=\"0\"\n",
        "            allowfullscreen\n",
+       "            \n",
        "        ></iframe>\n",
        "        "
       ],
       "text/plain": [
-       "<IPython.lib.display.IFrame at 0x7fac089d0438>"
+       "<IPython.lib.display.IFrame at 0x7fb258f60ee0>"
       ]
      },
      "metadata": {},
@@ -190,14 +185,13 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 7,
    "metadata": {},
    "outputs": [],
    "source": [
     "tracks = [\n",
     "    (\"https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/ncbi_refseq/GCA_000001405.15_GRCh38_full_analysis_set.refseq_annotation.sorted.gff.gz\", \"gff-demo\"),\n",
     "    (\"https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/skbr3/SKBR3_Feb17_GRCh38.sorted.bam\", \"bam-demo\"),\n",
-    "    (\"https://s3.amazonaws.com/jbrowse.org/genomes/hg19/skbr3/reads_lr_skbr3.fa_ngmlr-0.2.3_mapped.down.cram\", \"cram-demo\"),\n",
     "    (\"https://hgdownload.cse.ucsc.edu/goldenpath/hg38/phyloP100way/hg38.phyloP100way.bw\", \"bigwig-demo\"),\n",
     "    (\"https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz\", \"vcf-demo\"),\n",
     "    (\"https://jbrowse.org/genomes/GRCh38/repeats.bb\", \"bigbed\")\n",
@@ -210,7 +204,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": 8,
    "metadata": {},
    "outputs": [
     {
@@ -223,11 +217,12 @@
        "            src=\"http://127.0.0.1:8000/\"\n",
        "            frameborder=\"0\"\n",
        "            allowfullscreen\n",
+       "            \n",
        "        ></iframe>\n",
        "        "
       ],
       "text/plain": [
-       "<IPython.lib.display.IFrame at 0x7fabc80d3668>"
+       "<IPython.lib.display.IFrame at 0x7fb258fddd00>"
       ]
      },
      "metadata": {},
@@ -252,13 +247,12 @@
   }
  ],
  "metadata": {
+  "interpreter": {
+   "hash": "aaf81c8f28912d07c45359b3a81eb2244c23c90e1b370733684a5666e4e4597e"
+  },
   "kernelspec": {
-   "display_name": "Python 3.6.13 64-bit ('penv': conda)",
-   "metadata": {
-    "interpreter": {
-     "hash": "008c12275884433fb16330e243da39c752250b643962dc839102136cfd0533c7"
-    }
-   },
+   "display_name": "Python 3",
+   "language": "python",
    "name": "python3"
   },
   "language_info": {
@@ -271,7 +265,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.6.13-final"
+   "version": "3.8.5"
   }
  },
  "nbformat": 4,
diff --git a/browser.py b/browser.py
index 1121934..f28a776 100644
--- a/browser.py
+++ b/browser.py
@@ -21,13 +21,12 @@
 assembly_data = "https://jbrowse.org/genomes/GRCh38/fasta/hg38.prefix.fa.gz"
 jbrowse_conf.set_assembly(assembly_data,
                           aliases=aliases,
-                          ref_name_aliases=ref_name_aliases)
+                          refname_aliases=ref_name_aliases)
 
 # add a track
 track_data = "https://s3.amazonaws.com/jbrowse.org/genomes/" \
               "GRCh38/ncbi_refseq/GCA_000001405.15_GRCh38_full" \
               "_analysis_set.refseq_annotation.sorted.gff.gz"
-jbrowse_conf.add_track(track_data, name="test-demo")
 jbrowse_conf.add_track(track_data, name="test-demo", track_id="test-track")
 
 # set location
diff --git a/docs/docs/doctrees/dev_server.doctree b/docs/docs/doctrees/dev_server.doctree
new file mode 100644
index 0000000..eac364b
Binary files /dev/null and b/docs/docs/doctrees/dev_server.doctree differ
diff --git a/docs/docs/doctrees/environment.pickle b/docs/docs/doctrees/environment.pickle
index 8132e1d..7d3b980 100644
Binary files a/docs/docs/doctrees/environment.pickle and b/docs/docs/doctrees/environment.pickle differ
diff --git a/docs/docs/doctrees/faq.doctree b/docs/docs/doctrees/faq.doctree
new file mode 100644
index 0000000..dac6003
Binary files /dev/null and b/docs/docs/doctrees/faq.doctree differ
diff --git a/docs/docs/doctrees/index.doctree b/docs/docs/doctrees/index.doctree
index c25db72..6f2d8c7 100644
Binary files a/docs/docs/doctrees/index.doctree and b/docs/docs/doctrees/index.doctree differ
diff --git a/docs/docs/doctrees/installation.doctree b/docs/docs/doctrees/installation.doctree
index ca0fe60..8c2aebc 100644
Binary files a/docs/docs/doctrees/installation.doctree and b/docs/docs/doctrees/installation.doctree differ
diff --git a/docs/docs/doctrees/jbrowse_jupyter.doctree b/docs/docs/doctrees/jbrowse_jupyter.doctree
index d762d3e..e466e2b 100644
Binary files a/docs/docs/doctrees/jbrowse_jupyter.doctree and b/docs/docs/doctrees/jbrowse_jupyter.doctree differ
diff --git a/docs/docs/doctrees/modules.doctree b/docs/docs/doctrees/modules.doctree
index d1a7a46..a505efb 100644
Binary files a/docs/docs/doctrees/modules.doctree and b/docs/docs/doctrees/modules.doctree differ
diff --git a/docs/docs/doctrees/quickstart.doctree b/docs/docs/doctrees/quickstart.doctree
index 7c7e182..eafb2e4 100644
Binary files a/docs/docs/doctrees/quickstart.doctree and b/docs/docs/doctrees/quickstart.doctree differ
diff --git a/docs/docs/doctrees/tutorial.doctree b/docs/docs/doctrees/tutorial.doctree
index 9cb3b59..aef5652 100644
Binary files a/docs/docs/doctrees/tutorial.doctree and b/docs/docs/doctrees/tutorial.doctree differ
diff --git a/docs/docs/doctrees/util.doctree b/docs/docs/doctrees/util.doctree
index 6ae37ff..50d5f33 100644
Binary files a/docs/docs/doctrees/util.doctree and b/docs/docs/doctrees/util.doctree differ
diff --git a/docs/docs/html/_sources/dev_server.rst.txt b/docs/docs/html/_sources/dev_server.rst.txt
new file mode 100644
index 0000000..502a709
--- /dev/null
+++ b/docs/docs/html/_sources/dev_server.rst.txt
@@ -0,0 +1,4 @@
+Development Server
+---------------------------------------
+.. automodule:: jbrowse_jupyter.dev_server
+   :members: serve
diff --git a/docs/docs/html/_sources/faq.md.txt b/docs/docs/html/_sources/faq.md.txt
new file mode 100644
index 0000000..f17ea50
--- /dev/null
+++ b/docs/docs/html/_sources/faq.md.txt
@@ -0,0 +1,39 @@
+## FAQ
+* What file types are supported?
+    - We currently support:
+        * bam
+        * big wig
+        * big bed
+        * cram
+        * fasta indexed
+        * fasta gzipped
+        * gff3 tabix
+        * two bit
+        * vcf
+        * vcf gzipped
+
+* What track types are supported?
+    - We currently support:
+        * [AlignmentsTrack](https://jbrowse.org/jb2/docs/user_guide/#alignments-tracks)
+        * [QuantitativeTrack](https://jbrowse.org/jb2/docs/user_guide/#bigwig-tracks)
+        * [VariantTrack](https://jbrowse.org/jb2/docs/user_guide/#variant-tracks)
+        * [ReferenceSequenceTrack](https://jbrowse.org/jb2/docs/user_guide/#sequence-track)
+        * Feature Tracks
+
+    For the circular genome view (CGV), we only support variant tracks. Check out [track types](https://jbrowse.org/jb2/docs/user_guide/#sequence-track) docs for more information.
+* What views do you currently support?
+    - We currently support JBrowse's Linear Genome View and Circular Genome View. We hope to support more in the future.
+* How do I configure text searching?
+    - In order to configure text searching in your Linear Genome View, you must first create a text index. Follow the steps found [here](https://jbrowse.org/jb2/docs/quickstart_cli/#indexing-feature-names-for-searching). Then you must create and add a text search adapter to your config. 
+* How do I configure tracks to show up on first render?
+    - You can set a specific track/tracks to show up when the component first renders, and you can do this via the default session. You can set the default session via the JBrowseConfig API. `set_default_session`
+* How do I set a custom color theme palette to fit with my application?
+    - You can customize the color palette of the component through the use of `set_theme` function from the JBrowseConfig API. Below is an image of an LGV with a custom color palette. 
+![Custom Palette](https://github.com/GMOD/jbrowse-jupyter/raw/main/images/custom_palette.png)
+
+* Can I use local files/my own data?
+    - There are a couple of ways in which you can configure and use your own data from your local environment in jbrowse views. 
+        1.  make use of the jupyter notebook server as shown in the local_support.ipynb 
+        2. launch your own http server with CORS which will enable you to use local files in Google Colab notebooks and binder notebooks
+
+    **_Note_:** that these solutions are recommended for your development environments and not supported in production.
diff --git a/docs/docs/html/_sources/index.rst.txt b/docs/docs/html/_sources/index.rst.txt
index b7487c3..79f4d47 100644
--- a/docs/docs/html/_sources/index.rst.txt
+++ b/docs/docs/html/_sources/index.rst.txt
@@ -14,6 +14,7 @@ Welcome to JBrowse Jupyter's documentation!
    modules
    tutorial
    contact
+   faq
 
 Indices and tables
 ==================
diff --git a/docs/docs/html/_sources/installation.md.txt b/docs/docs/html/_sources/installation.md.txt
index d92b793..5860d4b 100644
--- a/docs/docs/html/_sources/installation.md.txt
+++ b/docs/docs/html/_sources/installation.md.txt
@@ -12,7 +12,7 @@ Clone the GMOD/jbrowse-jupyter [repository](https://github.com/GMOD/jbrowse-jupy
 to create a conda envirnment and install the dependecies.
 ```
 $ cd jbrowse-jupyter
-$ conda create -n myenv python=3.6
+$ conda create -n myenv
 $ conda activate myenv
 $ pip install -r requirements.txt
 ```
diff --git a/docs/docs/html/_sources/modules.rst.txt b/docs/docs/html/_sources/modules.rst.txt
index 62c633c..f85fa79 100644
--- a/docs/docs/html/_sources/modules.rst.txt
+++ b/docs/docs/html/_sources/modules.rst.txt
@@ -6,3 +6,4 @@ Reference
    
    util
    jbrowse_jupyter
+   dev_server
diff --git a/docs/docs/html/_sources/quickstart.md.txt b/docs/docs/html/_sources/quickstart.md.txt
index 8e411c3..6fa0750 100644
--- a/docs/docs/html/_sources/quickstart.md.txt
+++ b/docs/docs/html/_sources/quickstart.md.txt
@@ -2,7 +2,7 @@
 
 JBrowse Jupyter is a python package that provides a python interface to JBrowse 2 views.
 
-The package provides a JBrowseConfig API to facilitate the customization of JBrowse 2 React Linear Genome View's state configuration objects. It also provides utility functions to create Dash JBrowse components to embed in Dash applications and others to embed them in jupyter notebooks.
+The package provides a JBrowseConfig API to facilitate the customization of JBrowse 2 React embeddable component's state configuration objects. It also provides utility functions to create Dash JBrowse components to embed in Dash applications and others to embed them in jupyter notebooks.
 
 First,
 
diff --git a/docs/docs/html/_sources/tutorial.md.txt b/docs/docs/html/_sources/tutorial.md.txt
index 4438db6..f65ce68 100644
--- a/docs/docs/html/_sources/tutorial.md.txt
+++ b/docs/docs/html/_sources/tutorial.md.txt
@@ -6,3 +6,4 @@
 * [Python Dash Application with CGV](https://github.com/GMOD/jbrowse-jupyter/blob/main/cgv_examples.py)
 * [Notebook Examples LGV](https://github.com/GMOD/jbrowse-jupyter/blob/main/browser.ipynb)
 * [Notebook Examples CGV](https://github.com/GMOD/jbrowse-jupyter/blob/main/cgv_examples.py)
+* [Using Local Files in Jbrowse LGV](https://github.com/GMOD/jbrowse-jupyter/blob/main/local_support.ipynb)
diff --git a/docs/docs/html/_sources/util.rst.txt b/docs/docs/html/_sources/util.rst.txt
index 37a619d..b455edf 100644
--- a/docs/docs/html/_sources/util.rst.txt
+++ b/docs/docs/html/_sources/util.rst.txt
@@ -1,4 +1,4 @@
-Creating components
+Creating Components
 ---------------------------------------
 .. automodule:: jbrowse_jupyter.jbrowse_config
    :members: create
@@ -7,3 +7,4 @@ Creating components
 
 .. automodule:: jbrowse_jupyter.util
    :members: create_component, launch
+
diff --git a/docs/docs/html/_static/documentation_options.js b/docs/docs/html/_static/documentation_options.js
index 9567eb6..907873f 100644
--- a/docs/docs/html/_static/documentation_options.js
+++ b/docs/docs/html/_static/documentation_options.js
@@ -1,6 +1,6 @@
 var DOCUMENTATION_OPTIONS = {
     URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
-    VERSION: '1.2.5',
+    VERSION: '1.3.0',
     LANGUAGE: 'None',
     COLLAPSE_INDEX: false,
     BUILDER: 'html',
diff --git a/docs/docs/html/contact.html b/docs/docs/html/contact.html
index 1616562..b49a906 100644
--- a/docs/docs/html/contact.html
+++ b/docs/docs/html/contact.html
@@ -18,6 +18,7 @@
     <script src="_static/js/theme.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="FAQ" href="faq.html" />
     <link rel="prev" title="Tutorials and Demos" href="tutorial.html" /> 
 </head>
 
@@ -42,6 +43,7 @@
 <li class="toctree-l1"><a class="reference internal" href="modules.html">Reference</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
@@ -84,6 +86,7 @@ <h1>Contact us<a class="headerlink" href="#contact-us" title="Permalink to this
           </div>
           <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
         <a href="tutorial.html" class="btn btn-neutral float-left" title="Tutorials and Demos" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="faq.html" class="btn btn-neutral float-right" title="FAQ" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
   <hr/>
diff --git a/docs/docs/html/dev_server.html b/docs/docs/html/dev_server.html
new file mode 100644
index 0000000..4ba7d8f
--- /dev/null
+++ b/docs/docs/html/dev_server.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>Development Server &mdash; JBrowse Jupyter</title>
+      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
+        <script src="_static/jquery.js"></script>
+        <script src="_static/underscore.js"></script>
+        <script src="_static/doctools.js"></script>
+    <script src="_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="Tutorials and Demos" href="tutorial.html" />
+    <link rel="prev" title="JBrowseConfig API" href="jbrowse_jupyter.html" /> 
+</head>
+
+<body class="wy-body-for-nav"> 
+  <div class="wy-grid-for-nav">
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+            <a href="index.html" class="icon icon-home"> JBrowse Jupyter
+          </a>
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quickstart</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="modules.html">Reference</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="util.html">Creating Components</a></li>
+<li class="toctree-l2"><a class="reference internal" href="jbrowse_jupyter.html">JBrowseConfig API</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Development Server</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="index.html">JBrowse Jupyter</a>
+      </nav>
+
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
+          <li><a href="modules.html">Reference</a> &raquo;</li>
+      <li>Development Server</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="_sources/dev_server.rst.txt" rel="nofollow"> View page source</a>
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+             
+  <section id="module-jbrowse_jupyter.dev_server">
+<span id="development-server"></span><h1>Development Server<a class="headerlink" href="#module-jbrowse_jupyter.dev_server" title="Permalink to this headline"></a></h1>
+<dl class="py function">
+<dt class="sig sig-object py" id="jbrowse_jupyter.dev_server.serve">
+<span class="sig-name descname"><span class="pre">serve</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_path</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#jbrowse_jupyter.dev_server.serve" title="Permalink to this definition"></a></dt>
+<dd><p>Launches a development http server. It is not recommended
+for production.</p>
+<p>e.g
+serve(‘./path/to/data’, port=8080, host=’localhost’)</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>data_path</strong> (<em>str</em>) – path to file directory to serve
+defaults to the current working dir</p></li>
+<li><p><strong>port</strong> (<em>int</em>) – (optional) port to utilize when running
+the dev server, defaults to 8080</p></li>
+<li><p><strong>host</strong> (<em>str</em>) – (optional) host to utilize when running
+the dev server, default to localhost</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="jbrowse_jupyter.html" class="btn btn-neutral float-left" title="JBrowseConfig API" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="tutorial.html" class="btn btn-neutral float-right" title="Tutorials and Demos" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2021, Teresa De Jesus Martinez, JBrowse Team.</p>
+  </div>
+
+  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+    provided by <a href="https://readthedocs.org">Read the Docs</a>.
+   
+
+</footer>
+        </div>
+      </div>
+    </section>
+  </div>
+  <script>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/docs/html/faq.html b/docs/docs/html/faq.html
new file mode 100644
index 0000000..2c0726f
--- /dev/null
+++ b/docs/docs/html/faq.html
@@ -0,0 +1,172 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>FAQ &mdash; JBrowse Jupyter</title>
+      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
+        <script src="_static/jquery.js"></script>
+        <script src="_static/underscore.js"></script>
+        <script src="_static/doctools.js"></script>
+    <script src="_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="prev" title="Contact us" href="contact.html" /> 
+</head>
+
+<body class="wy-body-for-nav"> 
+  <div class="wy-grid-for-nav">
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+            <a href="index.html" class="icon icon-home"> JBrowse Jupyter
+          </a>
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quickstart</a></li>
+<li class="toctree-l1"><a class="reference internal" href="modules.html">Reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">FAQ</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="index.html">JBrowse Jupyter</a>
+      </nav>
+
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
+      <li>FAQ</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="_sources/faq.md.txt" rel="nofollow"> View page source</a>
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+             
+  <section id="faq">
+<h1>FAQ<a class="headerlink" href="#faq" title="Permalink to this headline"></a></h1>
+<ul>
+<li><p>What file types are supported?</p>
+<ul class="simple">
+<li><p>We currently support:</p>
+<ul>
+<li><p>bam</p></li>
+<li><p>big wig</p></li>
+<li><p>big bed</p></li>
+<li><p>cram</p></li>
+<li><p>fasta indexed</p></li>
+<li><p>fasta gzipped</p></li>
+<li><p>gff3 tabix</p></li>
+<li><p>two bit</p></li>
+<li><p>vcf</p></li>
+<li><p>vcf gzipped</p></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><p>What track types are supported?</p>
+<ul class="simple">
+<li><p>We currently support:</p>
+<ul>
+<li><p><a class="reference external" href="https://jbrowse.org/jb2/docs/user_guide/#alignments-tracks">AlignmentsTrack</a></p></li>
+<li><p><a class="reference external" href="https://jbrowse.org/jb2/docs/user_guide/#bigwig-tracks">QuantitativeTrack</a></p></li>
+<li><p><a class="reference external" href="https://jbrowse.org/jb2/docs/user_guide/#variant-tracks">VariantTrack</a></p></li>
+<li><p><a class="reference external" href="https://jbrowse.org/jb2/docs/user_guide/#sequence-track">ReferenceSequenceTrack</a></p></li>
+<li><p>Feature Tracks</p></li>
+</ul>
+</li>
+</ul>
+<p>For the circular genome view (CGV), we only support variant tracks. Check out <a class="reference external" href="https://jbrowse.org/jb2/docs/user_guide/#sequence-track">track types</a> docs for more information.</p>
+</li>
+<li><p>What views do you currently support?</p>
+<ul class="simple">
+<li><p>We currently support JBrowse’s Linear Genome View and Circular Genome View. We hope to support more in the future.</p></li>
+</ul>
+</li>
+<li><p>How do I configure text searching?</p>
+<ul class="simple">
+<li><p>In order to configure text searching in your Linear Genome View, you must first create a text index. Follow the steps found <a class="reference external" href="https://jbrowse.org/jb2/docs/quickstart_cli/#indexing-feature-names-for-searching">here</a>. Then you must create and add a text search adapter to your config.</p></li>
+</ul>
+</li>
+<li><p>How do I configure tracks to show up on first render?</p>
+<ul class="simple">
+<li><p>You can set a specific track/tracks to show up when the component first renders, and you can do this via the default session. You can set the default session via the JBrowseConfig API. <code class="docutils literal notranslate"><span class="pre">set_default_session</span></code></p></li>
+</ul>
+</li>
+<li><p>How do I set a custom color theme palette to fit with my application?</p>
+<ul class="simple">
+<li><p>You can customize the color palette of the component through the use of <code class="docutils literal notranslate"><span class="pre">set_theme</span></code> function from the JBrowseConfig API. Below is an image of an LGV with a custom color palette.
+<img alt="Custom Palette" src="https://github.com/GMOD/jbrowse-jupyter/raw/main/images/custom_palette.png" /></p></li>
+</ul>
+</li>
+<li><p>Can I use local files/my own data?</p>
+<ul class="simple">
+<li><p>There are a couple of ways in which you can configure and use your own data from your local environment in jbrowse views.</p>
+<ol class="arabic simple">
+<li><p>make use of the jupyter notebook server as shown in the local_support.ipynb</p></li>
+<li><p>launch your own http server with CORS which will enable you to use local files in Google Colab notebooks and binder notebooks</p></li>
+</ol>
+</li>
+</ul>
+<p><strong><em>Note</em>:</strong> that these solutions are recommended for your development environments and not supported in production.</p>
+</li>
+</ul>
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="contact.html" class="btn btn-neutral float-left" title="Contact us" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2021, Teresa De Jesus Martinez, JBrowse Team.</p>
+  </div>
+
+  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+    provided by <a href="https://readthedocs.org">Read the Docs</a>.
+   
+
+</footer>
+        </div>
+      </div>
+    </section>
+  </div>
+  <script>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/docs/html/genindex.html b/docs/docs/html/genindex.html
index 964055f..aef4c69 100644
--- a/docs/docs/html/genindex.html
+++ b/docs/docs/html/genindex.html
@@ -40,6 +40,7 @@
 <li class="toctree-l1"><a class="reference internal" href="modules.html">Reference</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
@@ -71,6 +72,7 @@ <h1 id="index">Index</h1>
 <div class="genindex-jumpbox">
  <a href="#A"><strong>A</strong></a>
  | <a href="#C"><strong>C</strong></a>
+ | <a href="#D"><strong>D</strong></a>
  | <a href="#G"><strong>G</strong></a>
  | <a href="#J"><strong>J</strong></a>
  | <a href="#L"><strong>L</strong></a>
@@ -100,6 +102,14 @@ <h2 id="C">C</h2>
   </ul></td>
 </tr></table>
 
+<h2 id="D">D</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="jbrowse_jupyter.html#jbrowse_jupyter.jbrowse_config.JBrowseConfig.delete_track">delete_track() (JBrowseConfig method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
 <h2 id="G">G</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
@@ -112,6 +122,13 @@ <h2 id="J">J</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li>
+    jbrowse_jupyter.dev_server
+
+      <ul>
+        <li><a href="dev_server.html#module-jbrowse_jupyter.dev_server">module</a>
+</li>
+      </ul></li>
+      <li>
     jbrowse_jupyter.jbrowse_config
 
       <ul>
@@ -147,6 +164,8 @@ <h2 id="M">M</h2>
     module
 
       <ul>
+        <li><a href="dev_server.html#module-jbrowse_jupyter.dev_server">jbrowse_jupyter.dev_server</a>
+</li>
         <li><a href="jbrowse_jupyter.html#module-jbrowse_jupyter.jbrowse_config">jbrowse_jupyter.jbrowse_config</a>
 </li>
         <li><a href="util.html#module-jbrowse_jupyter.util">jbrowse_jupyter.util</a>
@@ -158,12 +177,14 @@ <h2 id="M">M</h2>
 <h2 id="S">S</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="jbrowse_jupyter.html#jbrowse_jupyter.jbrowse_config.JBrowseConfig.set_assembly">set_assembly() (JBrowseConfig method)</a>
+      <li><a href="dev_server.html#jbrowse_jupyter.dev_server.serve">serve() (in module jbrowse_jupyter.dev_server)</a>
 </li>
-      <li><a href="jbrowse_jupyter.html#jbrowse_jupyter.jbrowse_config.JBrowseConfig.set_default_session">set_default_session() (JBrowseConfig method)</a>
+      <li><a href="jbrowse_jupyter.html#jbrowse_jupyter.jbrowse_config.JBrowseConfig.set_assembly">set_assembly() (JBrowseConfig method)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="jbrowse_jupyter.html#jbrowse_jupyter.jbrowse_config.JBrowseConfig.set_default_session">set_default_session() (JBrowseConfig method)</a>
+</li>
       <li><a href="jbrowse_jupyter.html#jbrowse_jupyter.jbrowse_config.JBrowseConfig.set_location">set_location() (JBrowseConfig method)</a>
 </li>
       <li><a href="jbrowse_jupyter.html#jbrowse_jupyter.jbrowse_config.JBrowseConfig.set_theme">set_theme() (JBrowseConfig method)</a>
diff --git a/docs/docs/html/index.html b/docs/docs/html/index.html
index 48ca6f0..1d48bd8 100644
--- a/docs/docs/html/index.html
+++ b/docs/docs/html/index.html
@@ -42,6 +42,7 @@
 <li class="toctree-l1"><a class="reference internal" href="modules.html">Reference</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
@@ -84,12 +85,14 @@ <h1>Welcome to JBrowse Jupyter’s documentation!<a class="headerlink" href="#we
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="modules.html">Reference</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="util.html">Creating components</a></li>
+<li class="toctree-l2"><a class="reference internal" href="util.html">Creating Components</a></li>
 <li class="toctree-l2"><a class="reference internal" href="jbrowse_jupyter.html">JBrowseConfig API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dev_server.html">Development Server</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 </div>
 </section>
diff --git a/docs/docs/html/installation.html b/docs/docs/html/installation.html
index 7b7ae4c..fb60293 100644
--- a/docs/docs/html/installation.html
+++ b/docs/docs/html/installation.html
@@ -48,6 +48,7 @@
 <li class="toctree-l1"><a class="reference internal" href="modules.html">Reference</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
@@ -87,7 +88,7 @@ <h2>Install with conda<a class="headerlink" href="#install-with-conda" title="Pe
 <p>Clone the GMOD/jbrowse-jupyter <a class="reference external" href="https://github.com/GMOD/jbrowse-jupyter">repository</a> and <a class="reference external" href="https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html">install conda</a>. Once you have conda installed, follow the steps found below
 to create a conda envirnment and install the dependecies.</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd jbrowse-jupyter
-$ conda create -n myenv python=3.6
+$ conda create -n myenv
 $ conda activate myenv
 $ pip install -r requirements.txt
 </pre></div>
diff --git a/docs/docs/html/jbrowse_jupyter.html b/docs/docs/html/jbrowse_jupyter.html
index 3c427b5..f0e6cb6 100644
--- a/docs/docs/html/jbrowse_jupyter.html
+++ b/docs/docs/html/jbrowse_jupyter.html
@@ -18,8 +18,8 @@
     <script src="_static/js/theme.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
-    <link rel="next" title="Tutorials and Demos" href="tutorial.html" />
-    <link rel="prev" title="Creating components" href="util.html" /> 
+    <link rel="next" title="Development Server" href="dev_server.html" />
+    <link rel="prev" title="Creating Components" href="util.html" /> 
 </head>
 
 <body class="wy-body-for-nav"> 
@@ -41,12 +41,14 @@
 <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
 <li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quickstart</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="modules.html">Reference</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="util.html">Creating components</a></li>
+<li class="toctree-l2"><a class="reference internal" href="util.html">Creating Components</a></li>
 <li class="toctree-l2 current"><a class="current reference internal" href="#">JBrowseConfig API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dev_server.html">Development Server</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
@@ -140,7 +142,7 @@
 <li><p><strong>Exception</strong> – if assembly has not been configured</p></li>
 <li><p><strong>TypeError</strong> – if adapter with same adapter id
 is already configured</p></li>
-<li><p><strong>TypeError</strong> – local files are not supported</p></li>
+<li><p><strong>TypeError</strong> – local paths are not supported</p></li>
 <li><p><strong>TypeError</strong> – if view is CGV</p></li>
 </ul>
 </dd>
@@ -181,6 +183,23 @@
 </dl>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="jbrowse_jupyter.jbrowse_config.JBrowseConfig.delete_track">
+<span class="sig-name descname"><span class="pre">delete_track</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">track_id</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#jbrowse_jupyter.jbrowse_config.JBrowseConfig.delete_track" title="Permalink to this definition"></a></dt>
+<dd><p>Deletes a track from the config.</p>
+<p>e.g:
+delte_track(“test_track_id”)</p>
+<p>Will delete track with track_id test_track_id.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><p><strong>track_id</strong> (<em>str</em>) – track_id to delete</p>
+</dd>
+<dt class="field-even">Raises</dt>
+<dd class="field-even"><p><strong>TypeError</strong> – if track_id provided does not exist</p>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="jbrowse_jupyter.jbrowse_config.JBrowseConfig.get_config">
 <span class="sig-name descname"><span class="pre">get_config</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#jbrowse_jupyter.jbrowse_config.JBrowseConfig.get_config" title="Permalink to this definition"></a></dt>
@@ -227,7 +246,7 @@
 </dd>
 <dt class="field-even">Raises</dt>
 <dd class="field-even"><ul class="simple">
-<li><p><strong>TypeError</strong> – if assembly_data is a local file</p></li>
+<li><p><strong>TypeError</strong> – if assembly_data is a local path</p></li>
 <li><p><strong>TypeError</strong> – adapter used for file type is not supported or
 recognized</p></li>
 </ul>
@@ -298,8 +317,8 @@
            </div>
           </div>
           <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
-        <a href="util.html" class="btn btn-neutral float-left" title="Creating components" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
-        <a href="tutorial.html" class="btn btn-neutral float-right" title="Tutorials and Demos" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+        <a href="util.html" class="btn btn-neutral float-left" title="Creating Components" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="dev_server.html" class="btn btn-neutral float-right" title="Development Server" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
   <hr/>
diff --git a/docs/docs/html/modules.html b/docs/docs/html/modules.html
index c53ec59..1e0a9ae 100644
--- a/docs/docs/html/modules.html
+++ b/docs/docs/html/modules.html
@@ -18,7 +18,7 @@
     <script src="_static/js/theme.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
-    <link rel="next" title="Creating components" href="util.html" />
+    <link rel="next" title="Creating Components" href="util.html" />
     <link rel="prev" title="Quickstart" href="quickstart.html" /> 
 </head>
 
@@ -41,12 +41,14 @@
 <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
 <li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quickstart</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Reference</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="util.html">Creating components</a></li>
+<li class="toctree-l2"><a class="reference internal" href="util.html">Creating Components</a></li>
 <li class="toctree-l2"><a class="reference internal" href="jbrowse_jupyter.html">JBrowseConfig API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dev_server.html">Development Server</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
@@ -77,8 +79,9 @@
 <h1>Reference<a class="headerlink" href="#reference" title="Permalink to this headline"></a></h1>
 <div class="toctree-wrapper compound">
 <ul>
-<li class="toctree-l1"><a class="reference internal" href="util.html">Creating components</a></li>
+<li class="toctree-l1"><a class="reference internal" href="util.html">Creating Components</a></li>
 <li class="toctree-l1"><a class="reference internal" href="jbrowse_jupyter.html">JBrowseConfig API</a></li>
+<li class="toctree-l1"><a class="reference internal" href="dev_server.html">Development Server</a></li>
 </ul>
 </div>
 </section>
@@ -88,7 +91,7 @@ <h1>Reference<a class="headerlink" href="#reference" title="Permalink to this he
           </div>
           <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
         <a href="quickstart.html" class="btn btn-neutral float-left" title="Quickstart" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
-        <a href="util.html" class="btn btn-neutral float-right" title="Creating components" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+        <a href="util.html" class="btn btn-neutral float-right" title="Creating Components" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
   <hr/>
diff --git a/docs/docs/html/objects.inv b/docs/docs/html/objects.inv
index b7387e7..4de0054 100644
--- a/docs/docs/html/objects.inv
+++ b/docs/docs/html/objects.inv
@@ -2,5 +2,6 @@
 # Project: JBrowse Jupyter
 # Version: 
 # The remainder of this file is compressed using zlib.
-xڵ�KN�0��>� ض�[vP6��T�ȵ'�:v�ǂ���$8q�&U��]<����q�ue^-F�+k�j�wkat�%P�W��N!\B~ M�P�awr����.o��|�[�����\�H�U\l�c#�F�+���"��i�%/}�X�F�"A�;��p���Q,֪	/1�N5&X�=Re���b�c;���M6����
-95�*J�QS���m���[��^����{&.,�+iLfЅZ̻}gY�:��Z��kT�z�E�����S<��!���a����a�'��7��y�I��R��p�V�Go��y�9��W��9�lYO�!�.����~�.�c�Z �qNX�~���΋���w[l�GC��n��pX)Ă�1�x���*㪏�Ƃ��[Y�Z�-Ʋv�{�!�y3řN`7ǖ}B�
\ No newline at end of file
+xڵTMo� ��+���Z�5�t�J�Ti�T��ba�������o��{�%c��v�U��d�x�f�7���d!߹�C0��}n���ж�l�p�g:�Y���7V����T��O�)��XkE/�P:%1��VE]�
+9���f.��|��0��Z_�I�̘�(r4�?�eVZ��<�3�d�W9���ȴ�)H@XL�L���֋{�@���B�
+�dxckC�,�Ej�p9y�����vX�Y��l��$n�a��i��G�gzSA2O���ό�#�(.��tuA������,I�i�>���+�A�	��8)�cᗑ��ꖔ�j%�'H�(#y��L�A'a܃��5^��ċx��b�p���#��E&et�Lp���r|�i�);��t��\��'�v�q#~�^�ǎ.�i���P�Ł$:gl:oc5���j��Okf^��y{X�8��"�wq�J �P���Tz�"�簲�)�M�hK��I"Υ���*�=���7uN�#
\ No newline at end of file
diff --git a/docs/docs/html/py-modindex.html b/docs/docs/html/py-modindex.html
index 6482d7e..1e04223 100644
--- a/docs/docs/html/py-modindex.html
+++ b/docs/docs/html/py-modindex.html
@@ -43,6 +43,7 @@
 <li class="toctree-l1"><a class="reference internal" href="modules.html">Reference</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
@@ -85,6 +86,11 @@ <h1>Python Module Index</h1>
        <td>
        <code class="xref">jbrowse_jupyter</code></td><td>
        <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="dev_server.html#module-jbrowse_jupyter.dev_server"><code class="xref">jbrowse_jupyter.dev_server</code></a></td><td>
+       <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
diff --git a/docs/docs/html/quickstart.html b/docs/docs/html/quickstart.html
index 2987ab8..35e61ef 100644
--- a/docs/docs/html/quickstart.html
+++ b/docs/docs/html/quickstart.html
@@ -47,6 +47,7 @@
 <li class="toctree-l1"><a class="reference internal" href="modules.html">Reference</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
@@ -76,7 +77,7 @@
   <section id="quickstart">
 <h1>Quickstart<a class="headerlink" href="#quickstart" title="Permalink to this headline"></a></h1>
 <p>JBrowse Jupyter is a python package that provides a python interface to JBrowse 2 views.</p>
-<p>The package provides a JBrowseConfig API to facilitate the customization of JBrowse 2 React Linear Genome View’s state configuration objects. It also provides utility functions to create Dash JBrowse components to embed in Dash applications and others to embed them in jupyter notebooks.</p>
+<p>The package provides a JBrowseConfig API to facilitate the customization of JBrowse 2 React embeddable component’s state configuration objects. It also provides utility functions to create Dash JBrowse components to embed in Dash applications and others to embed them in jupyter notebooks.</p>
 <p>First,</p>
 <p>install the jupyter-jbrowse package</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ pip install jupyter-jbrowse
diff --git a/docs/docs/html/search.html b/docs/docs/html/search.html
index daef8d2..cdcac48 100644
--- a/docs/docs/html/search.html
+++ b/docs/docs/html/search.html
@@ -43,6 +43,7 @@
 <li class="toctree-l1"><a class="reference internal" href="modules.html">Reference</a></li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
diff --git a/docs/docs/html/searchindex.js b/docs/docs/html/searchindex.js
index b37d528..9d4bf59 100644
--- a/docs/docs/html/searchindex.js
+++ b/docs/docs/html/searchindex.js
@@ -1,1 +1,1 @@
-Search.setIndex({docnames:["contact","index","installation","jbrowse_jupyter","modules","quickstart","tutorial","util"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["contact.md","index.rst","installation.md","jbrowse_jupyter.rst","modules.rst","quickstart.md","tutorial.md","util.rst"],objects:{"jbrowse_jupyter.jbrowse_config":[[3,1,1,"","JBrowseConfig"]],"jbrowse_jupyter.jbrowse_config.JBrowseConfig":[[3,2,1,"","add_df_track"],[3,2,1,"","add_text_search_adapter"],[3,2,1,"","add_track"],[3,2,1,"","get_config"],[3,2,1,"","set_assembly"],[3,2,1,"","set_default_session"],[3,2,1,"","set_location"],[3,2,1,"","set_theme"]],"jbrowse_jupyter.util":[[7,3,1,"","create_component"],[7,3,1,"","launch"]],jbrowse_jupyter:[[3,0,0,"-","jbrowse_config"],[7,0,0,"-","util"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function"},terms:{"0097a7":3,"1":3,"2":5,"3":[2,6],"311b92":3,"4":3,"400":7,"6":2,"8002":7,"8081":5,"90":3,"boolean":3,"class":3,"default":[3,5,7],"function":5,"import":5,"int":[3,7],"new":0,"return":[3,7],"true":[3,5],For:[2,3,5],If:3,It:5,The:5,To:2,__main__:5,__name__:5,about:[2,5],accept:3,activ:2,adapt:3,adapter_id:3,add:3,add_df_track:3,add_text_search_adapt:3,add_track:3,aggreg:3,ajax:0,alias:3,alreadi:3,also:[3,5],an:[0,3,7],ani:0,api:[1,4,5],aplic:2,app:[5,7],applic:[1,2,6],ar:[0,3],articl:2,assembl:[3,5],assembly_data:3,assum:3,avail:3,bai:3,bam:3,been:3,below:[2,5],bgzip:3,br:6,browser:[2,3,6],bug:0,build:[0,2],can:[2,3,5],cd:2,cell:[2,5],cgv:[2,3,6,7],cgv_exampl:2,chat:0,check:[2,3,5],checkout:5,chr1:3,circular:[2,3,5],circulargenomeview:2,clone:2,color:3,column:3,com:0,compon:[1,2,3,4,5],conda:1,conf:[3,7],config:[2,3,5],config_guid:3,configur:[2,3,5,7],contact:1,creat:[1,2,3,4,5],create_compon:[3,5,7],current:[3,5,7],custom:[3,5],custum:2,d50000:3,dash:[1,2,3,6,7],dash_comp:7,dash_html_compon:5,dashjbrows:2,dashjupyt:2,data:[3,5],datafram:3,debug:5,demo:1,dependeci:2,develop:0,df:3,directori:[2,3,5],displai:3,display_assembl:3,div:5,doc:[2,3],e:[3,7],els:3,email:0,emb:[2,5],embed:2,empti:7,enabl:2,end:3,envirn:2,environ:2,exampl:[2,5,6],except:3,exist:3,f57c00:3,facilit:5,fai:3,fals:3,fasta:3,featur:[0,3],file:3,filenam:3,find:2,first:[3,5],flag:3,follow:2,found:[2,3],from:[3,5,7],further:5,g:[3,7],gener:3,genom:[2,3,5,7],get:2,get_config:[3,5,7],github:0,gitter:0,given:[3,7],gmod:[0,2],guid:2,gz:3,gzi:3,ha:3,have:[0,2,3],height:7,help:[2,7],here:5,hexadecim:3,hg19:[3,5,7],hg38:[5,7],how:2,html:[2,5],http:[0,3],id:[3,5,7],im:0,index:[1,3],inform:[2,5],initi:3,instal:[1,5],instanc:[3,7],interfac:5,invalid:3,ipynb:2,issu:0,ix:3,ix_path:3,ixx:3,ixx_path:3,jb2:3,jbrows:[0,2,3,5,7],jbrowse2:0,jbrowse_conf:5,jbrowse_jupyt:5,jbrowseconfig:[1,4,5,7],jbrowseconfigur:7,join:0,json:3,jupyt:[0,2],jupyterdash:[2,7],jupyterlab:2,k:7,kwarg:[3,5,7],launch:[3,5,7],layout:[2,5],lgv:[2,3,5,6,7],librari:2,linear:[2,3,5],lineargenomeview:[2,5,7],list:[0,3],load:3,local:3,locat:3,love:0,mail:0,main:3,make:2,meta:3,meta_path:3,method:5,more:[2,5],myenv:2,n:2,name:3,net:0,none:3,notebook:[1,2,6],obj:[3,7],object:[3,5,7],onc:2,one:5,onli:3,option:[3,7],org:3,other:5,our:[0,3,5],out:[0,2,3],overwrit:3,packag:[2,5],page:1,palett:3,panda:3,paramet:[3,7],pass:[3,7],path:3,pip:[2,5],pleas:0,port:[5,7],present:3,primari:3,provid:[3,5],py:2,pypi:1,python:[1,2,6],quantit:3,quaternari:3,quickstart:1,r:2,rais:[3,7],reach:0,react:[3,5],realli:0,recogn:3,refer:[1,3],refnam:3,refname_alias:3,repo:5,report:0,repositori:2,request:0,requir:[2,3],resourc:1,root:2,run:[2,7],run_serv:5,s:5,same:3,score:3,search:[1,3],secondari:3,send:0,sequenc:3,server:7,session:3,set:3,set_assembl:3,set_default_sess:3,set_loc:3,set_them:3,sk:6,sourceforg:0,specif:2,specifi:7,start:[2,3],state:5,step:2,storybook:3,str:[3,7],subconfigur:3,suit:2,support:[3,7],sure:2,syntax:3,talk:0,tertiari:3,test:[5,7],text:3,them:5,theme:3,thi:[2,3],thought:0,track:3,track_data:3,track_id2:3,track_id:3,track_nam:3,track_typ:3,trackid:3,tracks_id:3,trix:3,tutori:1,txt:2,type:[3,7],typeerror:[3,7],up:3,url:3,us:[1,2,3,5,7],user:0,util:[5,7],v:7,view:[2,3,5,7],view_typ:[5,7],w:7,we:[0,5],wether:3,what:0,when:[3,7],where:7,within:2,you:[0,2,5]},titles:["Contact us","Welcome to JBrowse Jupyter\u2019s documentation!","Installation","JBrowseConfig API","Reference","Quickstart","Tutorials and Demos","Creating components"],titleterms:{api:3,applic:5,compon:7,conda:2,contact:0,creat:7,dash:5,demo:6,document:1,indic:1,instal:2,jbrows:1,jbrowseconfig:3,jupyt:[1,5],notebook:5,pypi:2,python:5,quickstart:5,refer:4,resourc:2,s:1,tabl:1,tutori:6,us:0,welcom:1}})
\ No newline at end of file
+Search.setIndex({docnames:["contact","dev_server","faq","index","installation","jbrowse_jupyter","modules","quickstart","tutorial","util"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["contact.md","dev_server.rst","faq.md","index.rst","installation.md","jbrowse_jupyter.rst","modules.rst","quickstart.md","tutorial.md","util.rst"],objects:{"jbrowse_jupyter.dev_server":[[1,1,1,"","serve"]],"jbrowse_jupyter.jbrowse_config":[[5,2,1,"","JBrowseConfig"]],"jbrowse_jupyter.jbrowse_config.JBrowseConfig":[[5,3,1,"","add_df_track"],[5,3,1,"","add_text_search_adapter"],[5,3,1,"","add_track"],[5,3,1,"","delete_track"],[5,3,1,"","get_config"],[5,3,1,"","set_assembly"],[5,3,1,"","set_default_session"],[5,3,1,"","set_location"],[5,3,1,"","set_theme"]],"jbrowse_jupyter.util":[[9,1,1,"","create_component"],[9,1,1,"","launch"]],jbrowse_jupyter:[[1,0,0,"-","dev_server"],[5,0,0,"-","jbrowse_config"],[9,0,0,"-","util"]]},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"0097a7":5,"1":5,"2":7,"3":8,"311b92":5,"4":5,"400":9,"8002":9,"8080":1,"8081":7,"90":5,"boolean":5,"class":5,"default":[1,2,5,7,9],"do":2,"function":[2,7],"import":7,"int":[1,5,9],"new":0,"return":[5,9],"true":[5,7],For:[2,4,5,7],If:5,In:2,It:[1,7],The:7,Then:2,There:2,To:4,Will:5,__main__:7,__name__:7,about:[4,7],accept:5,activ:4,adapt:[2,5],adapter_id:5,add:[2,5],add_df_track:5,add_text_search_adapt:5,add_track:5,aggreg:5,ajax:0,alias:5,alignmentstrack:2,alreadi:5,also:[5,7],an:[0,2,5,9],ani:0,api:[2,3,6,7],aplic:4,app:[7,9],applic:[2,3,4,8],ar:[0,2,5],articl:4,assembl:[5,7],assembly_data:5,assum:5,avail:5,bai:5,bam:[2,5],bed:2,been:5,below:[2,4,7],bgzip:5,big:2,binder:2,bit:2,br:8,browser:[4,5,8],bug:0,build:[0,4],can:[2,4,5,7],cd:4,cell:[4,7],cgv:[2,4,5,8,9],cgv_exampl:4,chat:0,check:[2,4,5,7],checkout:7,chr1:5,circular:[2,4,5,7],circulargenomeview:4,clone:4,colab:2,color:[2,5],column:5,com:0,compon:[2,3,4,5,6,7],conda:3,conf:[5,9],config:[2,4,5,7],config_guid:5,configur:[2,4,5,7,9],contact:3,cor:2,coupl:2,cram:2,creat:[2,3,4,5,6,7],create_compon:[5,7,9],current:[1,2,5,7,9],custom:[2,5,7],custum:4,d50000:5,dash:[3,4,5,8,9],dash_comp:9,dash_html_compon:7,dashjbrows:4,dashjupyt:4,data:[1,2,5,7],data_path:1,datafram:5,debug:7,delet:5,delete_track:5,delte_track:5,demo:3,dependeci:4,dev:1,develop:[0,2,3,6],df:5,dir:1,directori:[1,4,5,7],displai:5,display_assembl:5,div:7,doc:[2,4,5],doe:5,e:[1,5,9],els:5,email:0,emb:[4,7],embed:4,embedd:7,empti:9,enabl:[2,4],end:5,envirn:4,environ:[2,4],exampl:[4,7,8],except:5,exist:5,f57c00:5,facilit:7,fai:5,fals:5,faq:3,fasta:[2,5],featur:[0,2,5],file:[1,2,5,8],filenam:5,find:4,first:[2,5,7],fit:2,flag:5,follow:[2,4],found:[2,4,5],from:[2,5,7,9],further:7,futur:2,g:[1,5,9],gener:5,genom:[2,4,5,7,9],get:4,get_config:[5,7,9],gff3:2,github:0,gitter:0,given:[5,9],gmod:[0,4],googl:2,guid:4,gz:5,gzi:5,gzip:2,ha:5,have:[0,4,5],height:9,help:[4,9],here:[2,7],hexadecim:5,hg19:[5,7,9],hg38:[7,9],hope:2,host:1,how:[2,4],html:[4,7],http:[0,1,2,5],i:2,id:[5,7,9],im:0,imag:2,index:[2,3,5],inform:[2,4,7],initi:5,instal:[3,7],instanc:[5,9],interfac:7,invalid:5,ipynb:[2,4],issu:0,ix:5,ix_path:5,ixx:5,ixx_path:5,jb2:5,jbrows:[0,2,4,5,7,8,9],jbrowse2:0,jbrowse_conf:7,jbrowse_jupyt:7,jbrowseconfig:[2,3,6,7,9],jbrowseconfigur:9,join:0,json:5,jupyt:[0,2,4],jupyterdash:[4,9],jupyterlab:4,k:9,kwarg:[1,5,7,9],launch:[1,2,5,7,9],layout:[4,7],lgv:[2,4,5,7,8,9],librari:4,linear:[2,4,5,7],lineargenomeview:[4,7,9],list:[0,5],load:5,local:[2,5,8],local_support:2,localhost:1,locat:5,love:0,mail:0,main:5,make:[2,4],meta:5,meta_path:5,method:7,more:[2,4,7],must:2,my:2,myenv:4,n:4,name:5,net:0,none:5,note:2,notebook:[2,3,4,8],obj:[5,9],object:[5,7,9],onc:4,one:7,onli:[2,5],option:[1,5,9],order:2,org:5,other:7,our:[0,5,7],out:[0,2,4,5],overwrit:5,own:2,packag:[4,7],page:3,palett:[2,5],panda:5,paramet:[1,5,9],pass:[5,9],path:[1,5],pip:[4,7],pleas:0,port:[1,7,9],present:5,primari:5,product:[1,2],provid:[5,7],py:4,pypi:3,python:[3,4,8],quantit:5,quantitativetrack:2,quaternari:5,quickstart:3,r:4,rais:[5,9],reach:0,react:[5,7],realli:0,recogn:5,recommend:[1,2],refer:[3,5],referencesequencetrack:2,refnam:5,refname_alias:5,render:2,repo:7,report:0,repositori:4,request:0,requir:[4,5],resourc:3,root:4,run:[1,4,9],run_serv:7,s:[2,7],same:5,score:5,search:[2,3,5],secondari:5,send:0,sequenc:5,serv:1,server:[2,3,6,9],session:[2,5],set:[2,5],set_assembl:5,set_default_sess:[2,5],set_loc:5,set_them:[2,5],show:2,shown:2,sk:8,solut:2,sourceforg:0,specif:[2,4],specifi:9,start:[4,5],state:7,step:[2,4],storybook:5,str:[1,5,9],subconfigur:5,suit:4,support:[2,5,9],sure:4,syntax:5,tabix:2,talk:0,tertiari:5,test:[7,9],test_track_id:5,text:[2,5],them:7,theme:[2,5],thi:[2,4,5],thought:0,through:2,track:[2,5],track_data:5,track_id2:5,track_id:5,track_nam:5,track_typ:5,trackid:5,tracks_id:5,trix:5,tutori:3,two:2,txt:4,type:[2,5,9],typeerror:[5,9],up:[2,5],url:5,us:[2,3,4,5,7,8,9],user:0,util:[1,7,9],v:9,variant:2,varianttrack:2,vcf:2,via:2,view:[2,4,5,7,9],view_typ:[7,9],w:9,wai:2,we:[0,2,7],wether:5,what:[0,2],when:[1,2,5,9],where:9,which:2,wig:2,within:4,work:1,you:[0,2,4,7],your:2},titles:["Contact us","Development Server","FAQ","Welcome to JBrowse Jupyter\u2019s documentation!","Installation","JBrowseConfig API","Reference","Quickstart","Tutorials and Demos","Creating Components"],titleterms:{api:5,applic:7,compon:9,conda:4,contact:0,creat:9,dash:7,demo:8,develop:1,document:3,faq:2,indic:3,instal:4,jbrows:3,jbrowseconfig:5,jupyt:[3,7],notebook:7,pypi:4,python:7,quickstart:7,refer:6,resourc:4,s:3,server:1,tabl:3,tutori:8,us:0,welcom:3}})
\ No newline at end of file
diff --git a/docs/docs/html/tutorial.html b/docs/docs/html/tutorial.html
index 2e2ded5..300d959 100644
--- a/docs/docs/html/tutorial.html
+++ b/docs/docs/html/tutorial.html
@@ -19,7 +19,7 @@
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="Contact us" href="contact.html" />
-    <link rel="prev" title="JBrowseConfig API" href="jbrowse_jupyter.html" /> 
+    <link rel="prev" title="Development Server" href="dev_server.html" /> 
 </head>
 
 <body class="wy-body-for-nav"> 
@@ -43,6 +43,7 @@
 <li class="toctree-l1"><a class="reference internal" href="modules.html">Reference</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
@@ -78,6 +79,7 @@ <h1>Tutorials and Demos<a class="headerlink" href="#tutorials-and-demos" title="
 <li><p><a class="reference external" href="https://github.com/GMOD/jbrowse-jupyter/blob/main/cgv_examples.py">Python Dash Application with CGV</a></p></li>
 <li><p><a class="reference external" href="https://github.com/GMOD/jbrowse-jupyter/blob/main/browser.ipynb">Notebook Examples LGV</a></p></li>
 <li><p><a class="reference external" href="https://github.com/GMOD/jbrowse-jupyter/blob/main/cgv_examples.py">Notebook Examples CGV</a></p></li>
+<li><p><a class="reference external" href="https://github.com/GMOD/jbrowse-jupyter/blob/main/local_support.ipynb">Using Local Files in Jbrowse LGV</a></p></li>
 </ul>
 </section>
 
@@ -85,7 +87,7 @@ <h1>Tutorials and Demos<a class="headerlink" href="#tutorials-and-demos" title="
            </div>
           </div>
           <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
-        <a href="jbrowse_jupyter.html" class="btn btn-neutral float-left" title="JBrowseConfig API" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="dev_server.html" class="btn btn-neutral float-left" title="Development Server" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
         <a href="contact.html" class="btn btn-neutral float-right" title="Contact us" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
diff --git a/docs/docs/html/util.html b/docs/docs/html/util.html
index 3961317..c6c9ccb 100644
--- a/docs/docs/html/util.html
+++ b/docs/docs/html/util.html
@@ -4,7 +4,7 @@
   <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Creating components &mdash; JBrowse Jupyter</title>
+  <title>Creating Components &mdash; JBrowse Jupyter</title>
       <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
       <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
   <!--[if lt IE 9]>
@@ -41,12 +41,14 @@
 <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
 <li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quickstart</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="modules.html">Reference</a><ul class="current">
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Creating components</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Creating Components</a></li>
 <li class="toctree-l2"><a class="reference internal" href="jbrowse_jupyter.html">JBrowseConfig API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dev_server.html">Development Server</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorials and Demos</a></li>
 <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact us</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
 </ul>
 
         </div>
@@ -64,7 +66,7 @@
   <ul class="wy-breadcrumbs">
       <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
           <li><a href="modules.html">Reference</a> &raquo;</li>
-      <li>Creating components</li>
+      <li>Creating Components</li>
       <li class="wy-breadcrumbs-aside">
             <a href="_sources/util.rst.txt" rel="nofollow"> View page source</a>
       </li>
@@ -75,7 +77,7 @@
            <div itemprop="articleBody">
              
   <section id="creating-components">
-<h1>Creating components<a class="headerlink" href="#creating-components" title="Permalink to this headline"></a></h1>
+<h1>Creating Components<a class="headerlink" href="#creating-components" title="Permalink to this headline"></a></h1>
 <dl class="py function">
 <dt class="sig sig-object py">
 <span class="sig-name descname"><span class="pre">create</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">view_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'LGV'</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span></dt>
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 093b190..b668215 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -26,7 +26,7 @@
 author = 'Teresa De Jesus Martinez, JBrowse Team'
 
 # The full version, including alpha/beta/rc tags
-release = '1.2.5'
+release = '1.3.0'
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/docs/source/dev_server.rst b/docs/source/dev_server.rst
new file mode 100644
index 0000000..502a709
--- /dev/null
+++ b/docs/source/dev_server.rst
@@ -0,0 +1,4 @@
+Development Server
+---------------------------------------
+.. automodule:: jbrowse_jupyter.dev_server
+   :members: serve
diff --git a/docs/source/faq.md b/docs/source/faq.md
new file mode 100644
index 0000000..f17ea50
--- /dev/null
+++ b/docs/source/faq.md
@@ -0,0 +1,39 @@
+## FAQ
+* What file types are supported?
+    - We currently support:
+        * bam
+        * big wig
+        * big bed
+        * cram
+        * fasta indexed
+        * fasta gzipped
+        * gff3 tabix
+        * two bit
+        * vcf
+        * vcf gzipped
+
+* What track types are supported?
+    - We currently support:
+        * [AlignmentsTrack](https://jbrowse.org/jb2/docs/user_guide/#alignments-tracks)
+        * [QuantitativeTrack](https://jbrowse.org/jb2/docs/user_guide/#bigwig-tracks)
+        * [VariantTrack](https://jbrowse.org/jb2/docs/user_guide/#variant-tracks)
+        * [ReferenceSequenceTrack](https://jbrowse.org/jb2/docs/user_guide/#sequence-track)
+        * Feature Tracks
+
+    For the circular genome view (CGV), we only support variant tracks. Check out [track types](https://jbrowse.org/jb2/docs/user_guide/#sequence-track) docs for more information.
+* What views do you currently support?
+    - We currently support JBrowse's Linear Genome View and Circular Genome View. We hope to support more in the future.
+* How do I configure text searching?
+    - In order to configure text searching in your Linear Genome View, you must first create a text index. Follow the steps found [here](https://jbrowse.org/jb2/docs/quickstart_cli/#indexing-feature-names-for-searching). Then you must create and add a text search adapter to your config. 
+* How do I configure tracks to show up on first render?
+    - You can set a specific track/tracks to show up when the component first renders, and you can do this via the default session. You can set the default session via the JBrowseConfig API. `set_default_session`
+* How do I set a custom color theme palette to fit with my application?
+    - You can customize the color palette of the component through the use of `set_theme` function from the JBrowseConfig API. Below is an image of an LGV with a custom color palette. 
+![Custom Palette](https://github.com/GMOD/jbrowse-jupyter/raw/main/images/custom_palette.png)
+
+* Can I use local files/my own data?
+    - There are a couple of ways in which you can configure and use your own data from your local environment in jbrowse views. 
+        1.  make use of the jupyter notebook server as shown in the local_support.ipynb 
+        2. launch your own http server with CORS which will enable you to use local files in Google Colab notebooks and binder notebooks
+
+    **_Note_:** that these solutions are recommended for your development environments and not supported in production.
diff --git a/docs/source/index.rst b/docs/source/index.rst
index b7487c3..79f4d47 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -14,6 +14,7 @@ Welcome to JBrowse Jupyter's documentation!
    modules
    tutorial
    contact
+   faq
 
 Indices and tables
 ==================
diff --git a/docs/source/installation.md b/docs/source/installation.md
index d92b793..5860d4b 100644
--- a/docs/source/installation.md
+++ b/docs/source/installation.md
@@ -12,7 +12,7 @@ Clone the GMOD/jbrowse-jupyter [repository](https://github.com/GMOD/jbrowse-jupy
 to create a conda envirnment and install the dependecies.
 ```
 $ cd jbrowse-jupyter
-$ conda create -n myenv python=3.6
+$ conda create -n myenv
 $ conda activate myenv
 $ pip install -r requirements.txt
 ```
diff --git a/docs/source/modules.rst b/docs/source/modules.rst
index 62c633c..f85fa79 100644
--- a/docs/source/modules.rst
+++ b/docs/source/modules.rst
@@ -6,3 +6,4 @@ Reference
    
    util
    jbrowse_jupyter
+   dev_server
diff --git a/docs/source/quickstart.md b/docs/source/quickstart.md
index 8e411c3..6fa0750 100644
--- a/docs/source/quickstart.md
+++ b/docs/source/quickstart.md
@@ -2,7 +2,7 @@
 
 JBrowse Jupyter is a python package that provides a python interface to JBrowse 2 views.
 
-The package provides a JBrowseConfig API to facilitate the customization of JBrowse 2 React Linear Genome View's state configuration objects. It also provides utility functions to create Dash JBrowse components to embed in Dash applications and others to embed them in jupyter notebooks.
+The package provides a JBrowseConfig API to facilitate the customization of JBrowse 2 React embeddable component's state configuration objects. It also provides utility functions to create Dash JBrowse components to embed in Dash applications and others to embed them in jupyter notebooks.
 
 First,
 
diff --git a/docs/source/tutorial.md b/docs/source/tutorial.md
index 4438db6..f65ce68 100644
--- a/docs/source/tutorial.md
+++ b/docs/source/tutorial.md
@@ -6,3 +6,4 @@
 * [Python Dash Application with CGV](https://github.com/GMOD/jbrowse-jupyter/blob/main/cgv_examples.py)
 * [Notebook Examples LGV](https://github.com/GMOD/jbrowse-jupyter/blob/main/browser.ipynb)
 * [Notebook Examples CGV](https://github.com/GMOD/jbrowse-jupyter/blob/main/cgv_examples.py)
+* [Using Local Files in Jbrowse LGV](https://github.com/GMOD/jbrowse-jupyter/blob/main/local_support.ipynb)
diff --git a/docs/source/util.rst b/docs/source/util.rst
index 37a619d..b455edf 100644
--- a/docs/source/util.rst
+++ b/docs/source/util.rst
@@ -1,4 +1,4 @@
-Creating components
+Creating Components
 ---------------------------------------
 .. automodule:: jbrowse_jupyter.jbrowse_config
    :members: create
@@ -7,3 +7,4 @@ Creating components
 
 .. automodule:: jbrowse_jupyter.util
    :members: create_component, launch
+
diff --git a/jbrowse_jupyter/__init__.py b/jbrowse_jupyter/__init__.py
index 75a5ecb..663b81a 100644
--- a/jbrowse_jupyter/__init__.py
+++ b/jbrowse_jupyter/__init__.py
@@ -1,4 +1,5 @@
 # flake8: noqa
 from .jbrowse_config import JBrowseConfig, create
 from .util import  launch, create_component
-__all__ = ['JBrowseConfig', 'create', 'launch', 'create_component']
+from .dev_server import serve
+__all__ = ['JBrowseConfig', 'create', 'launch', 'create_component', 'serve']
diff --git a/jbrowse_jupyter/dev_server.py b/jbrowse_jupyter/dev_server.py
new file mode 100644
index 0000000..bf78818
--- /dev/null
+++ b/jbrowse_jupyter/dev_server.py
@@ -0,0 +1,162 @@
+#!/usr/bin/env python3
+import os
+import re
+from http.server import HTTPServer, SimpleHTTPRequestHandler
+
+'''
+This server takes inspiration from multiple solutions to provide:
+* CORS enabled HTTPServer
+    - https://gist.github.com/acdha/925e9ffc3d74ad59c3ea
+* Allowing Range Request Server
+    - https://github.com/danvk/RangeHTTPServer/blob/master/RangeHTTPServer
+* Adding specific directory
+    - https://stackoverflow.com/a/46332163
+'''
+# CREDIT FOR ENABLING RANGE REQUEST HTTP SERVER:
+# lines 20-31, 34,37-52, 59-107
+# https://github.com/danvk/RangeHTTPServer/blob/master/RangeHTTPServer
+
+
+def copy_byte_range(infile, outfile, start=None, stop=None, bufsize=16*1024):
+    '''Like shutil.copyfileobj, but only copy a range of the streams.
+    Both start and stop are inclusive.
+    '''
+    if start is not None:
+        infile.seek(start)
+    while 1:
+        to_read = min(bufsize, stop + 1 - infile.tell() if stop else bufsize)
+        buf = infile.read(to_read)
+        if not buf:
+            break
+        outfile.write(buf)
+
+
+BYTE_RANGE_RE = re.compile(r'bytes=(\d+)-(\d+)?$')
+
+
+def parse_byte_range(byte_range):
+    """
+    Returns the two numbers in 'bytes=123-456' or throws ValueError.
+    The last number or both numbers may be None.
+    """
+    if byte_range.strip() == '':
+        return None, None
+
+    m = BYTE_RANGE_RE.match(byte_range)
+    if not m:
+        raise ValueError('Invalid byte range %s' % byte_range)
+
+    first, last = [x and int(x) for x in m.groups()]
+    if last and last < first:
+        raise ValueError('Invalid byte range %s' % byte_range)
+    return first, last
+
+
+class CustomRequestHandler (SimpleHTTPRequestHandler):
+    """
+    Creating a small HTTP request server
+    """
+    def send_head(self):
+        if 'Range' not in self.headers:
+            self.range = None
+            return SimpleHTTPRequestHandler.send_head(self)
+        try:
+            self.range = parse_byte_range(self.headers['Range'])
+        except ValueError:
+            self.send_error(400, 'Invalid byte range')
+            return None
+        first, last = self.range
+
+        # Mirroring SimpleHTTPServer.py here
+        path = self.translate_path(self.path)
+        f = None
+        ctype = self.guess_type(path)
+        try:
+            f = open(path, 'rb')
+        except IOError:
+            self.send_error(404, 'File not found')
+            return None
+
+        fs = os.fstat(f.fileno())
+        file_len = fs[6]
+        if first >= file_len:
+            self.send_error(416, 'Requested Range Not Satisfiable')
+            return None
+
+        self.send_response(206)
+        self.send_header('Content-type', ctype)
+
+        if last is None or last >= file_len:
+            last = file_len - 1
+        response_length = last - first + 1
+
+        self.send_header('Content-Range',
+                         'bytes %s-%s/%s' % (first, last, file_len))
+        self.send_header('Content-Length', str(response_length))
+        self.send_header('Last-Modified', self.date_time_string(fs.st_mtime))
+        self.end_headers()
+        return f
+
+    def copyfile(self, source, outputfile):
+        if not self.range:
+            return SimpleHTTPRequestHandler.copyfile(self, source, outputfile)
+
+        # SimpleHTTPRequestHandler uses shutil.copyfileobj, which doesn't let
+        # you stop the copying before the end of the file.
+        start, stop = self.range  # set in send_head()
+        copy_byte_range(source, outputfile, start, stop)
+
+    def end_headers(self):
+        self.send_header('Access-Control-Allow-Origin', '*')
+        self.send_header('Access-Control-Allow-Methods', 'GET, OPTIONS')
+        self.send_header('Access-Control-Expose-Headers', '*')
+        self.send_header('Accept-Ranges', 'bytes')
+        # self.send_header('Content-Type', 'application/octet-stream')
+        SimpleHTTPRequestHandler.end_headers(self)
+
+    def translate_path(self, path):
+        path = SimpleHTTPRequestHandler.translate_path(self, path)
+        relpath = os.path.relpath(path, os.getcwd())
+        fullpath = os.path.join(self.server.base_path, relpath)
+        return fullpath
+
+
+class DevServer(HTTPServer):
+    def __init__(self, base_path, server_address,
+                 RequestHandlerClass=CustomRequestHandler):
+        self.base_path = base_path
+        HTTPServer.__init__(self, server_address, RequestHandlerClass)
+
+
+def serve(data_path, **kwargs):
+    """
+    Launches a development http server. It is not recommended
+    for production.
+
+    e.g
+    serve('./path/to/data', port=8080, host='localhost')
+
+    :param str data_path: path to file directory to serve
+        defaults to the current working dir
+    :param int port: (optional) port to utilize when running
+        the dev server, defaults to 8080
+    :param str host: (optional) host to utilize when running
+        the dev server, default to localhost
+    """
+    print("=============================================")
+    print("Warning: \n"
+          "This is a development environment.\n"
+          "This is not recommended for production.")
+    port = kwargs.get('port', 8080)
+    host = kwargs.get('host', "localhost")
+    # data_path = kwargs.get('path', ".")
+    # print('data', data_path)
+    # dir_path = os.path.join(os.path.dirname(__file__), data_path)
+    # print('dir path', dir_path)
+    # print('relative ', os.path.relpath(data_path, os.getcwd()))
+    # print('join', os.path.join(os.getcwd(), data_path))
+    httpd = DevServer(data_path, (host, port))
+    server = f'http://{host}:{port}'
+    print("=============================================")
+    print(f'Server is now running at \n "{server}"')
+    httpd.serve_forever()
diff --git a/jbrowse_jupyter/jbrowse_config.py b/jbrowse_jupyter/jbrowse_config.py
index 2f315b1..ac40e0e 100644
--- a/jbrowse_jupyter/jbrowse_config.py
+++ b/jbrowse_jupyter/jbrowse_config.py
@@ -162,7 +162,7 @@ def set_assembly(self, assembly_data, **kwargs):
         :param obj refname_aliases: (optional) config for refname aliases.
         :param str overwrite: flag wether or not to overwrite
             existing assembly, default to False.
-        :raises TypeError: if assembly_data is a local file
+        :raises TypeError: if assembly_data is a local path
         :raises TypeError: adapter used for file type is not supported or
             recognized
         """
@@ -176,7 +176,8 @@ def set_assembly(self, assembly_data, **kwargs):
         if (is_url(assembly_data)):
             if (indx != 'defaultIndex'):
                 if not is_url(indx):
-                    raise TypeError("Local files are not currently supported")
+                    raise TypeError("Provide a url for your index file."
+                                    "Checkout our local file support docs.")
             name = kwargs.get('name', get_name(assembly_data))
             assembly_adapter = guess_adapter_type(assembly_data, 'uri', indx)
             if (assembly_adapter["type"] == "UNKNOWN"):
@@ -195,7 +196,8 @@ def set_assembly(self, assembly_data, **kwargs):
             }
             self.config["assembly"] = assembly_config
         else:
-            raise TypeError("Local files are not currently supported.")
+            raise TypeError("Provide a url for your index file."
+                            "Checkout our local file support docs.")
 
     # ============ Tracks =============
 
@@ -329,7 +331,6 @@ def add_track(self, data, **kwargs):
         :raises TypeError: if track data is not provided
         :raises TypeError: if track type is not supported
         """
-        # TODO: local file support
         # TODO: get effective/working locations for track data
         # and track index when
         if not data:
@@ -346,8 +347,8 @@ def add_track(self, data, **kwargs):
         if is_url(data):
             # default to uri protocol until local files enabled
             if not is_url(index) and index != "defaultIndex":
-                raise TypeError("Local files are not currently supported."
-                                "Provide a url for your index file.")
+                raise TypeError("Provide a url for your index file."
+                                "Checkout our local file support docs.")
             adapter = guess_adapter_type(data, 'uri', index)
             if (adapter["type"] == "UNKNOWN"):
                 raise TypeError("Adapter type is not recognized")
@@ -391,7 +392,57 @@ def add_track(self, data, **kwargs):
             self.config["tracks"] = current_tracks
             self.tracks_ids_map[track_id] = track_config
         else:
-            raise TypeError("Local files are not currently supported.")
+            raise TypeError("Provide a url for your index file."
+                            "Checkout our local file support docs.")
+
+    def delete_track(self, track_id):
+        """
+        Deletes a track from the config.
+
+        e.g:
+        delte_track("test_track_id")
+
+        Will delete track with track_id test_track_id.
+
+        :param str track_id: track_id to delete
+
+        :raises TypeError: if track_id provided does not exist
+        """
+        new_tracks = []
+        current_tracks = self.get_tracks()
+        if track_id not in self.tracks_ids_map.keys():
+            raise TypeError(
+                (
+                    f'track with trackId: "{track_id}" does not exist in'
+                    f'config.')
+                )
+        else:
+            new_tracks = [
+                    t for t in current_tracks if t["trackId"] != track_id]
+            self.config["tracks"] = new_tracks
+            # clear from default session
+            default_sess = self.get_default_session()
+            tracks_sess = default_sess["view"]["tracks"]
+            new_tracks_sess = [
+                t for t in tracks_sess if t["configuration"] != track_id]
+            if (self.view == "CGV"):
+                self.config["defaultSession"] = {
+                    "name": "my session",
+                    "view": {
+                        "id": "circularView",
+                        "type": "CircularView",
+                        "tracks": new_tracks_sess
+                    }
+                }
+            else:
+                self.config["defaultSession"] = {
+                    "name": "my session",
+                    "view": {
+                        "id": "LinearGenomeView",
+                        "type": "LinearGenomeView",
+                        "tracks": new_tracks_sess
+                    }
+                }
 
     # ======= location ===========
     def set_location(self, location):
@@ -480,14 +531,15 @@ def add_text_search_adapter(self, ix_path,
         :raises Exception: if assembly has not been configured
         :raises TypeError: if adapter with same adapter id
                 is already configured
-        :raises TypeError: local files are not supported
+        :raises TypeError: local paths are not supported
         :raises TypeError: if view is CGV
         """
         err = "Please set the assembly before adding a text search adapter."
         if not self.get_assembly():
             raise Exception(err)
         if (not (is_url(ix_path) and is_url(ixx_path) and is_url(meta_path))):
-            raise TypeError("Local files are not currently supported.")
+            raise TypeError("Provide a url for your index file."
+                            "Checkout our local file support docs.")
         if self.view == "CGV":
             raise TypeError("Text Searching not currently available in CGV")
         assembly_name = self.get_assembly_name()
diff --git a/jbrowse_jupyter/tracks.py b/jbrowse_jupyter/tracks.py
index cde2bd7..0ab00d0 100644
--- a/jbrowse_jupyter/tracks.py
+++ b/jbrowse_jupyter/tracks.py
@@ -43,7 +43,7 @@ def guess_display_type(track_type, view="LGV"):
         "AlignmentsTrack": "LinearAlignmentsDisplay",
         "VariantTrack": "LinearVariantDisplay",
         "ReferenceSequenceTrack": "LinearReferenceSequenceDisplay",
-        "QuantitativeTrack": "LinearBasicDisplay",
+        "QuantitativeTrack": "LinearWiggleDisplay",
         "FeatureTrack": "LinearBasicDisplay",
     }
     if view == "CGV":
diff --git a/local_support.ipynb b/local_support.ipynb
new file mode 100644
index 0000000..6d25a3f
--- /dev/null
+++ b/local_support.ipynb
@@ -0,0 +1,481 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Use local data to configure a Linear Genome View\n",
+    "\n",
+    "This Jupyter notebook will show you how to add tracks using your local data. We are able to leverage Jupyter's server to serve local files that exist within the notebook's file tree, but we also provide a separate dev server for additional support in other environments (binder, colab, etc)\n",
+    "\n",
+    "## Overview:\n",
+    "1. Create an hg19 config\n",
+    "2. There are 2 ways to add Tracks utilizing local data\n",
+    "    1. Add a feature track using local data from within the Jupyter File Tree (Only if you are running this notebook in jupyter lab or jupyter notebook)\n",
+    "        * The first tutorial is intended for those running this notebook with jupyter lab and jupyter notebook\n",
+    "    2. Add a feature track by spinning JBrowse Jupyter's dev server\n",
+    "        * This tutorial is for anyone wanting to serve local files to use in colab notebooks,jupyter lab, jupyter notebook,binder and more.\n",
+    "3. Launch a linear genome view\n",
+    "\n",
+    "\n",
+    "#### Resources\n",
+    "* [Here are the docs on how Jupyter handles urls and  file navigation with /tree.](https://jupyterlab.readthedocs.io/en/stable/user/urls.html)\n",
+    "* [Additional information on the Jupyter Server](https://jupyter-server.readthedocs.io/en/latest/users/configuration.html)\n",
+    "* [Additional information on the Jupyter Notebook Server](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html#starting-the-notebook-server)\n",
+    "* [Additional information on JBrowse dev server](https://github.com/GMOD/jbrowse-jupyter/blob/main/README.md)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Requirement already satisfied: jbrowse-jupyter in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (1.2.5)\n",
+      "Requirement already satisfied: jupyter-dash>=0.4.2 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jbrowse-jupyter) (0.4.2)\n",
+      "Requirement already satisfied: Werkzeug==2.0.3 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jbrowse-jupyter) (2.0.3)\n",
+      "Requirement already satisfied: pytest>=6.2.5 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jbrowse-jupyter) (7.1.1)\n",
+      "Requirement already satisfied: dash==2.3.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jbrowse-jupyter) (2.3.0)\n",
+      "Requirement already satisfied: dash-jbrowse>=1.0.2 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jbrowse-jupyter) (1.1.0)\n",
+      "Requirement already satisfied: pandas>=1.1.5 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jbrowse-jupyter) (1.4.2)\n",
+      "Requirement already satisfied: plotly>=5.0.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (5.7.0)\n",
+      "Requirement already satisfied: dash-html-components==2.0.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (2.0.0)\n",
+      "Requirement already satisfied: dash-table==5.0.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (5.0.0)\n",
+      "Requirement already satisfied: flask-compress in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (1.11)\n",
+      "Requirement already satisfied: Flask>=1.0.4 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (2.1.1)\n",
+      "Requirement already satisfied: dash-core-components==2.0.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from dash==2.3.0->jbrowse-jupyter) (2.0.0)\n",
+      "Requirement already satisfied: Jinja2>=3.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.3.0->jbrowse-jupyter) (3.1.1)\n",
+      "Requirement already satisfied: importlib-metadata>=3.6.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.3.0->jbrowse-jupyter) (4.11.3)\n",
+      "Requirement already satisfied: click>=8.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.3.0->jbrowse-jupyter) (8.1.2)\n",
+      "Requirement already satisfied: itsdangerous>=2.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from Flask>=1.0.4->dash==2.3.0->jbrowse-jupyter) (2.1.2)\n",
+      "Requirement already satisfied: zipp>=0.5 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from importlib-metadata>=3.6.0->Flask>=1.0.4->dash==2.3.0->jbrowse-jupyter) (3.8.0)\n",
+      "Requirement already satisfied: MarkupSafe>=2.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from Jinja2>=3.0->Flask>=1.0.4->dash==2.3.0->jbrowse-jupyter) (2.1.1)\n",
+      "Requirement already satisfied: retrying in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (1.3.3)\n",
+      "Requirement already satisfied: ipykernel in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (6.12.1)\n",
+      "Requirement already satisfied: ipython in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (8.2.0)\n",
+      "Requirement already satisfied: requests in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (2.27.1)\n",
+      "Requirement already satisfied: ansi2html in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (1.7.0)\n",
+      "Requirement already satisfied: nest-asyncio in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jupyter-dash>=0.4.2->jbrowse-jupyter) (1.5.5)\n",
+      "Requirement already satisfied: numpy>=1.18.5 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from pandas>=1.1.5->jbrowse-jupyter) (1.22.3)\n",
+      "Requirement already satisfied: pytz>=2020.1 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from pandas>=1.1.5->jbrowse-jupyter) (2022.1)\n",
+      "Requirement already satisfied: python-dateutil>=2.8.1 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from pandas>=1.1.5->jbrowse-jupyter) (2.8.2)\n",
+      "Requirement already satisfied: tenacity>=6.2.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from plotly>=5.0.0->dash==2.3.0->jbrowse-jupyter) (8.0.1)\n",
+      "Requirement already satisfied: six in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from plotly>=5.0.0->dash==2.3.0->jbrowse-jupyter) (1.16.0)\n",
+      "Requirement already satisfied: attrs>=19.2.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (21.4.0)\n",
+      "Requirement already satisfied: pluggy<2.0,>=0.12 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (1.0.0)\n",
+      "Requirement already satisfied: packaging in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (21.3)\n",
+      "Requirement already satisfied: tomli>=1.0.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (2.0.1)\n",
+      "Requirement already satisfied: py>=1.8.2 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (1.11.0)\n",
+      "Requirement already satisfied: iniconfig in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from pytest>=6.2.5->jbrowse-jupyter) (1.1.1)\n",
+      "Requirement already satisfied: brotli in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from flask-compress->dash==2.3.0->jbrowse-jupyter) (1.0.9)\n",
+      "Requirement already satisfied: tornado>=6.1 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (6.1)\n",
+      "Requirement already satisfied: psutil in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (5.9.0)\n",
+      "Requirement already satisfied: debugpy>=1.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (1.6.0)\n",
+      "Requirement already satisfied: traitlets>=5.1.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (5.1.1)\n",
+      "Requirement already satisfied: matplotlib-inline>=0.1 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.1.3)\n",
+      "Requirement already satisfied: appnope in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.1.3)\n",
+      "Requirement already satisfied: jupyter-client>=6.1.12 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (7.2.2)\n",
+      "Requirement already satisfied: stack-data in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.2.0)\n",
+      "Requirement already satisfied: backcall in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.2.0)\n",
+      "Requirement already satisfied: decorator in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (5.1.1)\n",
+      "Requirement already satisfied: setuptools>=18.5 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (58.0.4)\n",
+      "Requirement already satisfied: pygments>=2.4.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (2.11.2)\n",
+      "Requirement already satisfied: jedi>=0.16 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.18.1)\n",
+      "Requirement already satisfied: pickleshare in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.7.5)\n",
+      "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (3.0.29)\n",
+      "Requirement already satisfied: pexpect>4.3 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (4.8.0)\n",
+      "Requirement already satisfied: parso<0.9.0,>=0.8.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jedi>=0.16->ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.8.3)\n",
+      "Requirement already satisfied: jupyter-core>=4.9.2 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jupyter-client>=6.1.12->ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (4.9.2)\n",
+      "Requirement already satisfied: pyzmq>=22.3 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jupyter-client>=6.1.12->ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (22.3.0)\n",
+      "Requirement already satisfied: entrypoints in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from jupyter-client>=6.1.12->ipykernel->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.4)\n",
+      "Requirement already satisfied: ptyprocess>=0.5 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from pexpect>4.3->ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.7.0)\n",
+      "Requirement already satisfied: wcwidth in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.2.5)\n",
+      "Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from packaging->pytest>=6.2.5->jbrowse-jupyter) (3.0.7)\n",
+      "Requirement already satisfied: charset-normalizer~=2.0.0 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from requests->jupyter-dash>=0.4.2->jbrowse-jupyter) (2.0.12)\n",
+      "Requirement already satisfied: certifi>=2017.4.17 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from requests->jupyter-dash>=0.4.2->jbrowse-jupyter) (2021.10.8)\n",
+      "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from requests->jupyter-dash>=0.4.2->jbrowse-jupyter) (1.26.9)\n",
+      "Requirement already satisfied: idna<4,>=2.5 in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from requests->jupyter-dash>=0.4.2->jbrowse-jupyter) (3.3)\n",
+      "Requirement already satisfied: asttokens in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from stack-data->ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (2.0.5)\n",
+      "Requirement already satisfied: executing in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from stack-data->ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.8.3)\n",
+      "Requirement already satisfied: pure-eval in /Users/teresamartinez/opt/anaconda3/envs/jbrowse-jupyter/lib/python3.8/site-packages (from stack-data->ipython->jupyter-dash>=0.4.2->jbrowse-jupyter) (0.2.2)\n"
+     ]
+    }
+   ],
+   "source": [
+    "!pip install jbrowse-jupyter"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from jbrowse_jupyter import launch, create, serve\n",
+    "from jupyter_dash import JupyterDash\n",
+    "import requests"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Uncomment and run the next line if you are running this in jupyterlab/jupyternotebook\n",
+    "\n",
+    "# !pip install jupyter_server_proxy"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 52,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Uncomment and run the next line if you are running this in jupyterlab/jupyternotebook\n",
+    "\n",
+    "# import jupyter_server_proxy\n",
+    "# JupyterDash.infer_jupyter_proxy_config() "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Create an Hg19 JBrowse config\n",
+    "\n",
+    "hg19 = create('LGV', genome='hg19')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Adding Tracks from local data"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "The following two sections\n",
+    "1. Using the Jupyter server and\n",
+    "2. Using the Jupyter dev server\n",
+    "are the two ways in which JBrowse Jupyter supports using local data to configure JBrowse views in the development environment."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Before proceeding with the tutorials, download our example gff files to add a track to our hg19 config.\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "227612"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# You can skip this step if you are using your own data.\n",
+    "\n",
+    "file1 = 'https://s3.amazonaws.com/jbrowse.org/genomes/hg19/ncbi_refseq/GRCh37_latest_genomic.sort.gff.gz'\n",
+    "file2 = 'https://s3.amazonaws.com/jbrowse.org/genomes/hg19/ncbi_refseq/GRCh37_latest_genomic.sort.gff.gz.tbi'\n",
+    "response1 = requests.get(file1)\n",
+    "response2 = requests.get(file2)\n",
+    "open(\"GRCh37_latest_genomic.sort.gff.gz\", \"wb\").write(response1.content)\n",
+    "open(\"GRCh37_latest_genomic.sort.gff.gz.tbi\", \"wb\").write(response2.content)\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "\n",
+    "> **Note**\n",
+    "> If you have local files that you want to use, proceed to \n",
+    ">  * **Step 3.** on the *Using the Jupyter server* tutorial or\n",
+    ">  * **Step 1.** of the *Using the JBrowse Jupyter dev server* tutorial\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Using the Jupyter server \n",
+    "\n",
+    "This section will show you how to use local files with jbrowse jupyter when your files exist within your jupyterlab/jupyter notebook file system.\n",
+    "\n",
+    "**!!!! Intended for those running this notebook in jupyter lab or jupyter notebook !!!!**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**1.** Run Jupyter."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "\n",
+    "```\n",
+    "$ jupyter lab\n",
+    "```\n",
+    "or\n",
+    "```\n",
+    "$ jupyter notebook\n",
+    "```\n",
+    "\n",
+    "Ignore this step if you are already running this notebook with jupyter lab or jupyter notebook."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**2.** Verify that local files exist within your notebook file system.\n",
+    "\n",
+    "Now that we have these new files in your file tree, we will be able to format urls to pass on to our components.\n",
+    "Navigate to *http://localhost:8888/tree* to verify that *GRCh37_latest_genomic.sort.gff.gz* and *GRCh37_latest_genomic.sort.gff.gz.tbi* exist within the file tree.\n",
+    "\n",
+    "> **_NOTE_:** \n",
+    "> Your port and host may be different, so make sure that you use the same port from your jupyter notebook configuration. To ensure you have the correct one, you can look at the port in the url window where your notebook is running. *http://your-host:your-port/tree*"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**3.** Format the Jupyter URLs of your local data to pass to your JBrowse view. \n",
+    "\n",
+    "\n",
+    "* To format your urls: `http://localhost:8888/files/<your_file_name>`\n",
+    "* e.g 'http://localhost:8888/files/' + 'GRCh37_latest_genomic.sort.gff.gz' = 'http://localhost:8888/files/GRCh37_latest_genomic.sort.gff.gz'\n",
+    "\n",
+    "You do not need to add tree or lab to this url."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 55,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# With the gff files that we just downloaded to our directory, we will add a track.\n",
+    "track_data = 'http://localhost:8888/files/GRCh37_latest_genomic.sort.gff.gz'\n",
+    "track_data_index = 'http://localhost:8888/files/GRCh37_latest_genomic.sort.gff.gz.tbi'\n",
+    "hg19.add_track(track_data, index=track_data_index, track_id='jupyter_server_demo', name='jupyter_server_demo')\n",
+    "hg19.set_default_session(['jupyter_server_demo'],False)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "> **_NOTE_:**\n",
+    "> You can now skip to launch the Linear Genome View or continue with the next tutorial to checkout our JBrowse dev server. "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Using the JBrowse Jupyter dev server\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**1.** git clone our repo: [https://github.com/GMOD/jbrowse-jupyter](https://github.com/GMOD/jbrowse-jupyter). You can skip this step if you are already running this tutorial from within this repo.\n",
+    "\n",
+    "**2.** From the root of our directory, run \n",
+    "```$ python serve.py```\n",
+    "\n",
+    "**3.** You can provide a specific PORT, HOST, and DIRECTORY from where you want to serve your data.\n",
+    "None of these are required. \n",
+    "PORT will default to 8080\n",
+    "Host will default to 'localhost'\n",
+    "The directory will default to your current working directory.\n",
+    "\n",
+    "Your terminal should look something like this, if no input was provided.\n",
+    "```\n",
+    "> python serve.py \n",
+    "Enter a PORT: [default:8080] > \n",
+    "8080\n",
+    "ENTER A HOST:  [default:localhost] > \n",
+    "localhost\n",
+    "ENTER PATH TO YOUR LOCAL DATA: [default:(pwd)] > \n",
+    "\n",
+    "=============================================\n",
+    "Warning: \n",
+    "This is a development environment.\n",
+    "This is not recommended for production.\n",
+    "=============================================\n",
+    "Server is now running at \n",
+    " \"http://localhost:8080\"\n",
+    "```\n",
+    "**4.** Navigate to the url and verify that your local data is there.\n",
+    "If you do not see your files, make sure you moved the files you wish to serve to the directory you provided to the server above. \n",
+    "\n",
+    "E.g: if you chose the defaults, the dev server is serving the files in your current working directory (this repo). You can move the files you just donwloaded or that you wish to display into the current working directory. Otherwise, exit the server and rerun the script with the correct path to the folder containing your files.\n",
+    "\n",
+    "Now you should be able to provide urls to your local data to the JBrowse Jupyter config. Below you can find an example of our dev server serving files \n",
+    "*GRCh37_latest_genomic.sort.gff.gz* and *GRCh37_latest_genomic.sort.gff.gz.tbi* on port 8080 on local host.\n",
+    "\n",
+    "\n",
+    "You can also run the server by using the serve() method from our package. Checkout our docs for more information regarding our local dev server:\n",
+    "https://github.com/GMOD/jbrowse-jupyter/blob/main/README.md\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "> **_NOTE_:** You can skip the following cell if you did not run the local dev server provided by JBrowse Jupyter. \n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "track_data2 = 'http://localhost:8080/GRCh37_latest_genomic.sort.gff.gz'\n",
+    "track_data_index2 = 'http://localhost:8080/GRCh37_latest_genomic.sort.gff.gz.tbi'\n",
+    "hg19.add_track(track_data2, index=track_data_index2, track_id='jbrowse_dev_server_demo', name='jbrowse_dev_server_demo')\n",
+    "hg19.set_default_session(['jbrowse_dev_server_demo'],False)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Launch a Linear Genome View \n",
+    "\n",
+    "You will be able to checkout your newly added tracks by opening the track selector. For more information on our embedded components\n",
+    "https://jbrowse.org/storybook/lgv/v2.1.4/?path=/story/getting-started--page\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Uncomment the next line if you wish to see the tracks from both turtorials \n",
+    "# hg19.set_default_session(['jupyter_server_demo', 'jbrowse_dev_server_demo'],False)\n",
+    "config = hg19.get_config()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "\n",
+       "        <iframe\n",
+       "            width=\"100%\"\n",
+       "            height=\"300\"\n",
+       "            src=\"http://127.0.0.1:3000/\"\n",
+       "            frameborder=\"0\"\n",
+       "            allowfullscreen\n",
+       "            \n",
+       "        ></iframe>\n",
+       "        "
+      ],
+      "text/plain": [
+       "<IPython.lib.display.IFrame at 0x7fa471436ac0>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "launch(config, port=3000)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## FAQ & Troubleshooting\n",
+    "Issues with the JupyterDash proxy?\n",
+    "\n",
+    "* This tutorial works in both jupyter notebook and jupyter lab. If you have issues with the proxy and you are working in jupyter lab, make sure that you have the `jupyterlab-dash` extension installed and you have pip installed `jupyter_server_proxy`. If you get an error when installing it or after installing it, exit jupyter lab then run `$ jupyter lab build` and run jupyter lab again.\n",
+    "\n",
+    "Issues with the PORT?\n",
+    "\n",
+    "* Make sure that the PORT that your notebook is running is different from the one that you use to launch the JBrowse view and or the JBrowse Dev Server. To change the PORT in JBrowse Jupyter, simply pass a new port number to the launch() method or pass a different port to the dev server. \n",
+    "\n",
+    "Issues with Jupyter Dash?\n",
+    "\n",
+    "* Our package has dependencies on JupyterDash and Dash, please make sure that you are using jupyter lab version 2.0 and greater. This tutorial is currently working with the lastest version of jupyter lab 3.4.6.\n",
+    "\n",
+    "I am running this notebook in colab and can't access the files?\n",
+    "\n",
+    "* You can manually download the files provided in the demo by clicking on the links to aws and store them in directory hosted by the dev server.\n",
+    "\n",
+    "## Contact Us\n",
+    "For other issues, please open a ticket on our repo or contact our gitter channel for more support\n",
+    "\n",
+    "Report a bug or request a feature at https://github.com/GMOD/jbrowse-jupyter/issues\n",
+    "Join our developers chat at https://gitter.im/GMOD/jbrowse2\n",
+    "Send an email to our mailing list at gmod-ajax@lists.sourceforge.net\n",
+    "\n"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.13"
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "aaf81c8f28912d07c45359b3a81eb2244c23c90e1b370733684a5666e4e4597e"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/requirements.txt b/requirements.txt
index 5f74897..13e015a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
 dash==2.3.0
-dash-jbrowse>=1.0.2
+dash-jbrowse>=1.1.0
 jupyter_dash>=0.4.2
 Werkzeug==2.0.3
 pandas>=1.1.5
diff --git a/serve.py b/serve.py
new file mode 100644
index 0000000..0f53ef7
--- /dev/null
+++ b/serve.py
@@ -0,0 +1,24 @@
+import os
+from jbrowse_jupyter import serve
+
+
+if __name__ == "__main__":
+    # Enter a PORT number
+    PORT = input("Enter a PORT: [default:8080] > ")
+    if not PORT:
+        PORT = 8080
+    else:
+        PORT = int(PORT)
+    print(PORT)
+    # Enter a host
+    HOST = input("ENTER A HOST:  [default:localhost] > ")
+    if not HOST:
+        HOST = "localhost"
+    print(HOST)
+    # Enter the path to your local data
+    DIRECTORY = input("ENTER PATH TO YOUR LOCAL DATA: [default:(pwd)] > ")
+    if not DIRECTORY:
+        DIRECTORY = os.getcwd()
+    print(DIRECTORY)
+    print("\n")
+    serve(DIRECTORY, port=PORT, host=HOST)
diff --git a/setup.py b/setup.py
index bb49327..8c4ccf0 100644
--- a/setup.py
+++ b/setup.py
@@ -9,7 +9,7 @@
 
 setuptools.setup(
     name="jbrowse-jupyter",
-    version="1.2.5",
+    version="1.3.0",
     author="Teresa De Jesus Martinez",
     author_email="tere486martinez@gmail.com",
     maintainer="Teresa De Jesus Martinez; JBrowse Team",


Test patch:
diff --git a/tests/test_jbrowse_config.py b/tests/test_jbrowse_config.py
index 913e176..206c3fa 100644
--- a/tests/test_jbrowse_config.py
+++ b/tests/test_jbrowse_config.py
@@ -53,7 +53,9 @@ def test_set_assembly():
     # raises an error, there is no local file support yet
     with pytest.raises(TypeError) as excinfo:
         conf.set_assembly("./path/to/local/file")
-    assert "Local files are not currently supported." in str(excinfo)
+    err = "Provide a url for your index file." \
+        "Checkout our local file support docs."
+    assert err in str(excinfo)
     aliases = ["hg38"]
     uri = "https://s3.amazonaws.com/jbrowse.org/genomes/" \
         "GRCh38/hg38_aliases.txt"
@@ -190,14 +192,17 @@ def test_create_view_from_conf():
     # can add track
     assert len(hg19_from_config.get_tracks()) == 0
     bigwig = "https://jbrowse.org/genomes/hg19/COLO829/colo_normal.bw"
-    hg19_from_config.add_track(bigwig, name="wiggle track example")
+    hg19_from_config.add_track(bigwig, name="example", track_id='delete-test')
     assert len(hg19_from_config.get_tracks()) == 1
     # can set default session
-    hg19_from_config.set_default_session(["wiggle track example"])
+    hg19_from_config.set_default_session(["example"])
     assert hg19_from_config.get_default_session()
-
+    # can delete a track
+    hg19_from_config.delete_track("delete-test")
+    assert len(hg19_from_config.get_tracks()) == 0
     # can set text search adapter
-    index_error = 'Local files are not currently supported.'
+    index_error = "Provide a url for your index file."\
+        "Checkout our local file support docs."
     with pytest.raises(TypeError) as excinfo:
         hg19_from_config.add_text_search_adapter(
             './path/to/ixname.ix',