diff --git a/src/components/FitsViewer.js b/src/components/FitsViewer.js
new file mode 100644
index 0000000000000000000000000000000000000000..75a69d8963050adcf0ca540cb66b1572b1fbf2a5
--- /dev/null
+++ b/src/components/FitsViewer.js
@@ -0,0 +1,20 @@
+import React, { useContext } from "react";
+import { QueryContext } from "../contexts/QueryContext";
+
+export default function FitsViewer() {
+  const { fits } = useContext(QueryContext)
+  const url = "https://js9.si.edu/js9/js9.html?url="+JSON.parse(JSON.stringify(fits))+"&colormap=viridis&scale=log"
+
+  console.log(fits);
+  console.log("fits url: ", url);
+
+  return (
+    <div class="embed-responsive embed-responsive-16by9">
+      <iframe
+        class="embed-responsive-item"
+        src={url}
+        allowfullscreen
+      ></iframe>
+    </div>
+  );
+}
diff --git a/src/components/query/VOServiceResults.js b/src/components/query/VOServiceResults.js
index 5617ff91dc7a2720e4fcce1f6c0720459fd46233..2aa93cc13ce885c4f567257aecf7cdabbfc9697f 100644
--- a/src/components/query/VOServiceResults.js
+++ b/src/components/query/VOServiceResults.js
@@ -1,11 +1,13 @@
 import React, { useContext } from "react";
-import { Alert, Table } from "react-bootstrap";
+import { Redirect, useHistory } from "react-router-dom";
+import { Alert, Table, Button } from "react-bootstrap";
 import { QueryContext } from "../../contexts/QueryContext";
 import LoadingSpinner from "../LoadingSpinner";
 import Paginate from "../Paginate";
 
 export default function VORegistryResults({ catalog }) {
-  const { queryMap, page, setPage } = useContext(QueryContext);
+  const { queryMap, page, setPage, setFits } = useContext(QueryContext);
+  const history = useHistory();
 
   if (!queryMap.get(catalog)) return null;
   console.log("VO service queryMap:", queryMap.get(catalog));
@@ -46,6 +48,18 @@ export default function VORegistryResults({ catalog }) {
                       {result.result}
                     </a>
                   </td>
+                  <td>
+                    {/* if results is in .fits format
+                      display it with js9 */}
+                    {(result.result.endsWith('.fits')) && 
+                      <Button 
+                        value={result.result} 
+                        onClick={(event) => {
+                          setFits(event.target.value);
+                          history.push('/fitsviewer');
+                        }}
+                      >View fits</Button>}
+                  </td>
                 </tr>
               );
             })}
diff --git a/src/contexts/QueryContext.js b/src/contexts/QueryContext.js
index 057b2313cc14ca53d8c251f830228441daae2117..a2a38ee59ab9e56e6ee49a305149055c63df216c 100644
--- a/src/contexts/QueryContext.js
+++ b/src/contexts/QueryContext.js
@@ -7,6 +7,7 @@ export function QueryContextProvider({ children }) {
   const queryMap = useMap();
   const [formData, setFormData] = useState();
   const [page, setPage] = useState(1);
+  const [fits, setFits] = useState("https://uilennest.net/astrobase/data/191231001/3836665.fits");
   // const [category, setCategory] = useState();
   // const [level, setLevel] = useState();
 
@@ -18,6 +19,8 @@ export function QueryContextProvider({ children }) {
         queryMap,
         formData,
         setFormData,
+        fits,
+        setFits,
       }}
     >
       {children}
diff --git a/src/routes/Routes.js b/src/routes/Routes.js
index fc77e31c2912295350f16f1254404f6f01c8ae3c..ab5c04b9795aa146dc0a54304eb50f5d7bef3289 100644
--- a/src/routes/Routes.js
+++ b/src/routes/Routes.js
@@ -11,6 +11,7 @@ import { QueryContextProvider } from "../contexts/QueryContext";
 import Rucio from "../components/Rucio";
 import Interactive from "../components/Interactive";
 import { IVOAContextProvider } from "../contexts/IVOAContext";
+import FitsViewer from "../components/FitsViewer";
 
 export default function Routes() {
   const { config, handleLogin, handleLogout, handleError } = useContext(GlobalContext);
@@ -26,29 +27,29 @@ export default function Routes() {
         <Route exact path="/archives">
           <Archives />
         </Route>
-        <Route exact path="/query">
-          <QueryContextProvider>
-            <QueryCatalogs />
-          </QueryContextProvider>
-        </Route>
         <Route exact path="/rucio">
           <Rucio />
         </Route>
         <Route exact path="/interactive">
           <Interactive />
         </Route>
+        <Route exact path="/fitsviewer">
+          <QueryContextProvider>
+            <FitsViewer />
+          </QueryContextProvider>
+        </Route>
         <Route exact path="/login" component={handleLogin} />
         <Route exact path="/logout" component={handleLogout} />
         <Route exact path="/error" component={handleError} />
         <Route exact path="/archives/:uri" component={ArchiveDetails} />
-        <Route exact path="/archives/ivoa/query">
+        <Route exact path={["/vo-query", "/archives/ivoa/query"]}>
           <QueryContextProvider>
             <IVOAContextProvider>
               <QueryIVOARegistry />
             </IVOAContextProvider>
           </QueryContextProvider>
         </Route>
-        <Route exact path="/archives/:uri/query">
+        <Route exact path={["/adex-query", "/archives/:uri/query"]}>
           <QueryContextProvider>
             <QueryCatalogs />
           </QueryContextProvider>