diff --git a/src/App.vue b/src/App.vue
index 42155f8be07861bfb391fda0ac56f8c2456bc973..e87334a9bcb7e0d3c4af45b38c13bf792a02e9e6 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -2,10 +2,10 @@
   <v-app id="app">
     <header>
       <h1><a href="/">Ordbøkene <span class="beta">(BETA)</span></a></h1>
-      <p class="about-link"><a href="#">OM ORDBØKENE</a></p>
-      <p class="sub-title"><a href="/">Bokmålsordboka | Nynorskordboka – rett norsk</a></p>
+      <p class="about-link"><router-link to="/om">OM ORDBØKENE</router-link></p>
+      <p class="sub-title"><router-link to="/">Bokmålsordboka | Nynorskordboka – rett norsk</router-link></p>
     </header>
-    <router-view></router-view>
+    <router-view :uggabuga="1"></router-view>
     <footer>
       <div>
         <img id="srlogo" src="./assets/Sprakradet_logo_neg.png" alt="">
@@ -18,237 +18,6 @@
   </v-app>
 </template>
 
-<script>
-import axios from "axios"
-import entities from './utils/entities.js'
-import Article from './components/Article.vue'
-import SearchResults from './components/SearchResults.vue'
-import Autocomplete from './components/Autocomplete.vue'
-
-var api_endpoint = 'https://beta.ordbok.uib.no/api/dict'
-
-axios.interceptors.request.use(function (config) {
-    config.headers["x-api-key"] = "ZkYiyRVXxH86ijsvhx3cH4SY5Iik2ijI3BKVJGMm"
-    return config;
-  }, function (error) {
-    return Promise.reject(error);
-  });
-
-function navigate_to_article(self, source) {
-  axios.get(api_endpoint + '/' + self.$route.params.lang + '/article/' + self.$route.params.id)
-  .then(function(response){
-    self.article = Object.assign(response.data, {'dictionary': self.$route.params.lang})
-    self.search_results = []
-  })
-  .catch(function(error){
-    if (error.response && error.response.status == 404) {
-      self.article = {
-        lemmas: [],
-        error: "Vi har ingen artikkel med id " + self.$route.params.id
-      }
-    } else {
-      self.article = {
-        lemmas: [],
-        error: "Noe gikk galt..."
-      }
-      console.log(error)
-    }
-  })
-  .then(function(response){
-    self.waiting_for_articles = false
-    history.replaceState({article: self.article, search_results: [], lang: self.lang}, '')
-    if (source) {
-      self.$plausible.trackEvent('internal link incoming', {props: {origin: source}})
-    }
-  })
-}
-
-function navigate_to_search(self, query) {
-  axios.get(self.api_pref + 'search?q=' + query)
-  .then(function(response){
-    self.search_results = response.data
-    if (! self.search_results.length) {
-      self.article = {
-        lemmas: [],
-        error: "Vi fant ingen resultater for '" + decodeURIComponent(query) + "'. (Søkeforlag kommer i en senere oppatering av Ordbøkene)"
-      }
-    }
-  })
-  .catch(function(error){
-    if (error.response && error.response.status == 400) {
-      self.article = {
-        lemmas: [],
-        error: "Søkeuttrykket inneholder feil"
-      }
-    } else if (error.response) {
-      self.article = {
-        lemmas: [],
-        error: "Noe gikk galt på serversiden"
-      }
-    } else {
-      self.article = {
-        lemmas: [],
-        error: "Nettverksproblemer, prøv igjen"
-      }
-    }
-  })
-  .then(function(_){
-    self.waiting_for_articles = false
-    history.replaceState({article: self.article, search_results: self.search_results, lang: self.lang}, '')
-  })
-}
-
-function navigate_to_word(self, word) {
-  axios.get(self.api_pref + 'suggest?q=' + word)
-  .then(function(response){
-    self.search_results = response.data.filter(result => result.match.length == word.length)
-    if (! self.search_results.length) {
-      self.article = {
-        lemmas: [],
-        error: "Ordet '" + decodeURIComponent(word) + "' finnes ikke i ordbøkene"
-      }
-    }
-  })
-  .catch(function(error){
-    if (error.response) {
-      self.article = {
-        lemmas: [],
-        error: "Noe gikk galt på serversiden"
-      }
-    } else {
-      self.article = {
-        lemmas: [],
-        error: "Nettverksproblemer, prøv igjen"
-      }
-    }
-  })
-  .then(function(_){
-    self.waiting_for_articles = false
-    history.replaceState({article: self.article, search_results: self.search_results, lang: self.lang}, '')
-  })
-}
-
-export default {
-  name: 'App',
-  data: function() {
-    return {
-      article_key: 0,
-      search_results: [],
-      lang: 'bob,nob',
-      waiting_for_articles: true,
-      waiting_for_metadata: true,
-      article: {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}},
-      monthly_bm: {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}},
-      monthly_nn: {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}}
-    }
-  },
-  computed: {
-    waiting: function() {
-      return (this.waiting_for_articles || this.waiting_for_metadata) && this.$route.name != 'root'
-    },
-    api_pref: function() {
-      return api_endpoint + '/' + this.lang + '/article/'
-    }
-  },
-  components: {
-    Article,
-    Autocomplete,
-    SearchResults
-  },
-  methods: {
-    select_result: function(event) {
-      if(event.articles){
-        this.$router.push('/' + this.lang + '/w/' + event.word)
-        this.search_results = event.articles
-        this.article = {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}}
-        history.replaceState({article: this.article, search_results: this.search_results, lang: this.lang}, '')
-        this.$plausible.trackEvent('dropdown selection', {props: {query: event.label, match: event.match}})
-      }else{
-        this.waiting_for_articles = true
-        this.article = {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}}
-        this.$router.push(`/${this.lang}/search/${event.q}`)
-        navigate_to_search(this, event.q)
-        this.$plausible.trackEvent('dropdown selection', {props: {query: event.label, match: '<fritekstsøk>'}})
-      }
-    },
-    article_link_click: function(item) {
-      if (this.article.article_id == item.article_id){
-        this.article_key++
-        history.replaceState({article: this.article, search_results: this.search_results, lang: this.lang}, '')
-      }else{
-        this.article = {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}}
-        this.waiting_for_articles = true
-        navigate_to_article(this, item.source)
-      }
-    }
-  },
-  mounted: function(){
-    let self = this
-    this.lang = 'bob,nob'
-
-    Promise.all([
-      axios.get(api_endpoint + '/bob').then(function(response){
-        let concepts = response.data.concepts
-        entities.bob = concepts
-      }),
-      axios.get(api_endpoint + '/nob').then(function(response){
-        let concepts = response.data.concepts
-        entities.nob = concepts
-      })
-    ]).then(function(_) {
-      self.waiting_for_metadata = false
-      if(self.$route.name == 'word') {
-        self.lang = self.$route.params.lang
-        navigate_to_word(self, self.$route.params.word)
-      }
-      else if(self.$route.name == 'lookup'){
-        navigate_to_article(self, self.$route.params.id)
-      }
-      else if (self.$route.name == 'search') {
-        self.lang = self.$route.params.lang
-        navigate_to_search(self, self.$route.params.query)
-      }
-      else {
-        self.lang = self.$route.params.lang || 'bob,nob'
-        self.waiting_for_articles = false
-        history.replaceState({article: self.article, search_results: self.search_results, lang: self.lang}, '')
-      }
-
-      // words of the month
-      axios.get(api_endpoint + '/bob/article/5607').then(function(response){
-        self.monthly_bm = Object.assign(response.data, {dictionary: 'bob'})
-      })
-
-      axios.get(api_endpoint + '/nob/article/78569').then(function(response){
-        self.monthly_nn = Object.assign(response.data, {dictionary: 'nob'})
-      })
-    }).catch(function(_){
-      self.article = {
-        lemmas: [],
-        error: "Et nettverksproblem hindret lasting av siden. Prøv å laste siden på nytt"
-      }
-      self.waiting_for_metadata = false
-      self.waiting_for_articles = false
-    })
-  },
-  watch: {
-    $route() {
-      this.$plausible.trackEvent('language', {props: {code: this.$route.params.lang}})
-    }
-  },
-  created: function() {
-    let self = this
-    window.onpopstate = function (event) {
-      if (event.state) {
-        self.article = event.state.article
-        self.search_results = event.state.search_results
-        self.lang = event.state.lang
-      }
-    }
-
-  }
-}
-</script>
 
 <style>
   @import url('https://fonts.googleapis.com/css2?family=Inria+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@@ -309,19 +78,7 @@ p.about-link > a{
   color: var(--v-tertiary-base);
 }
 
-main {
-  padding-bottom: 20px;
-  flex: 1 0 auto;
-  background-color: var(--v-tertiary-base);
-}
-
-main.welcome {
-  background-image: url('./assets/books.jpg');
-  background-repeat: no-repeat;
-  background-attachment: fixed;
-}
-
-header, #search_results, #spinner, #single_article_container, footer, div.welcome, div.search_container {
+header,  footer {
   padding-left: calc((100vw - 1000px) / 2);
   padding-right: calc((100vw - 1000px) / 2);
 }
@@ -332,9 +89,6 @@ header, #search_results, #spinner, #single_article_container, footer, div.welcom
   }
 }
 
-#spinner {
-  padding-top: 40px;
-}
 
 header {
   padding-top: 20px;
@@ -342,25 +96,6 @@ header {
   background-color: var(--v-primary-base);
 }
 
-div.monthly {
-  padding: 20px;
-  border-radius: 10px;
-  display: flex;
-  width: 100%;
-}
-
-div.monthly > div {
-  flex: 50%;
-}
-
-div.monthly article.bob .dict-label::before {
-  content: "månedens ";
-}
-
-div.monthly article.nob .dict-label::before {
-  content: "månadens ";
-}
-
 .sub-title {
   font-size: 20px;
   margin: 0px;
@@ -374,24 +109,6 @@ footer {
   color: #ffffff;
 }
 
-.search_container {
-  max-width: 1400px;
-  padding-top: 50px;
-}
-
-.v-label span {
-  color: var(--v-primary-base);
-}
-
-li.suggestion {
-  font-weight: bold;
-  padding-left: 20px;
-  padding-top: 5px;
-  padding-bottom: 5px;
-  border: 0px;
-  background-image: none;
-}
-
 footer > div {
   display: table-cell;
   vertical-align: middle;
@@ -406,9 +123,5 @@ footer > div {
   height: 60px;
 }
 
-::selection {
-  background: var(--v-secondary-base);
-  color: white;
-}
 
 </style>
diff --git a/src/components/DictionaryView.vue b/src/components/DictionaryView.vue
index 363e315532c2612dfa68c92fff7e5b83a8c40b4b..a06381e23b97799d1084734ce68c04127c7b4d07 100644
--- a/src/components/DictionaryView.vue
+++ b/src/components/DictionaryView.vue
@@ -279,64 +279,8 @@ export default {
 </script>
 
 <style>
-  @import url('https://fonts.googleapis.com/css2?family=Inria+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap');
-  @import url('https://fonts.googleapis.com/css2?family=Inria+Serif:ital,wght@0,400;0,700;1,400;1,700&family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap');
-
-#app {
-  font-family: 'Noto Sans', Helvetica, Arial, sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  color: #2c3e50;
-  display: flex;
-  flex-direction: column;
-  height: 100%;
-}
-
-html, body {
-    height: 100%
-}
-
-body {
-  margin: 0px;
-
-}
-
-h1 {
-  font-family: Inria Serif;
-  font-size: 36px;
-  color: var(--v-primary-base);
-}
 
 
-header > h1 > a {
-  color: var(--v-secondary-base) !important;
-  font-size: 40px;
-  margin: 0px;
-  text-decoration: none;
-}
-
-p.about-link {
-  text-align: right;
-  margin: 0px;
-  float: right;
-}
-
-header > p > a {
-  color: var(--v-tertiary-base)   !important;
-  text-decoration: none;
-}
-
-span.beta {
-  color: #BBBBBB;
-}
-
-p.about-link > a{
-  text-decoration: none;
-  border-bottom: solid var(--v-secondary-base) 4px;
-  font-size: 12px;
-  color: var(--v-tertiary-base);
-}
-
 main {
   padding-bottom: 20px;
   flex: 1 0 auto;
@@ -349,26 +293,15 @@ main.welcome {
   background-attachment: fixed;
 }
 
-header, #search_results, #spinner, #single_article_container, footer, div.welcome, div.search_container {
+#search_results, #spinner, #single_article_container, div.welcome, div.search_container {
   padding-left: calc((100vw - 1000px) / 2);
   padding-right: calc((100vw - 1000px) / 2);
 }
 
-@media (max-width: 500px) {
-  .verbose {
-    display: none;
-  }
-}
-
 #spinner {
   padding-top: 40px;
 }
 
-header {
-  padding-top: 20px;
-  padding-bottom: 20px;
-  background-color: var(--v-primary-base);
-}
 
 div.monthly {
   padding: 20px;
@@ -389,18 +322,6 @@ div.monthly article.nob .dict-label::before {
   content: "månadens ";
 }
 
-.sub-title {
-  font-size: 20px;
-  margin: 0px;
-}
-
-footer {
-  font-size: smaller;
-  display: table;
-  flex-direction: row;
-  background-color: var(--v-primary-base);
-  color: #ffffff;
-}
 
 .search_container {
   max-width: 1400px;
@@ -420,20 +341,6 @@ li.suggestion {
   background-image: none;
 }
 
-footer > div {
-  display: table-cell;
-  vertical-align: middle;
-  padding: 10px;
-}
-
-#srlogo {
-  height: 20px;
-}
-
-#uiblogo {
-  height: 60px;
-}
-
 ::selection {
   background: var(--v-secondary-base);
   color: white;