diff --git a/rute.cpp b/rute.cpp
index d97283eb75dc0597ddda86ecae551a3999600aa0..cfa5f54210e1698651322bcc8740caa84c5831b3 100644
--- a/rute.cpp
+++ b/rute.cpp
@@ -4,7 +4,7 @@
  * @file rute.cpp
  * @author Sondre Sand & Frederik Simonsen
  */
-#include <algorithm>
+#include <algorithm> //all_of
 #include <iostream>
 #include <iomanip>
 #include <list>
@@ -17,7 +17,40 @@ using namespace std;
 
 extern Stoppesteder gStoppestederBase;
 
-// TODO: Fyll på her etter som header-fila tar mer form
+//********STOPP FUNKSJONER*******************
+
+
+/**
+ *  Construct a new Stopp:: Stopp object
+ * 
+ * @param stoppNr 
+ * @param antMin 
+ */
+Stopp::Stopp(const int stoppNr, const int antMin) {
+    nr = stoppNr; minutter = antMin;
+}
+
+/**
+ * Henter en stopps unike nr
+ * 
+ * @return Et stoppesteds unike nr
+ */
+int Stopp::hentNr() {
+    return nr;
+}
+
+/**
+ * skrivTilFil(...)
+ * 
+ * @param ut 
+ */
+void Stopp::skrivTilFil(ofstream & ut) {
+    ut << nr << ' ' << minutter << '\n';
+}
+
+//********RUTE FUNKSJONER*******************
+
+
 /**
  * Rute()
  */
@@ -26,7 +59,9 @@ Rute::Rute() {
 }
 
 /**
- * Rute::Rute(...)
+ * Opretter en ny rute fra fil
+ * 
+ * @param inn filen det leses fra
  */
 Rute::Rute(ifstream & inn) {
     int antStopp,
@@ -41,17 +76,98 @@ Rute::Rute(ifstream & inn) {
 }
 
 /**
- * @brief Construct a new Stopp:: Stopp object
+ * -sjekker om lista er mer en 1 entry.
  * 
- * @param stoppNr 
- * @param antMin 
+ * @return true 
+ * @return false 
  */
-Stopp::Stopp(const int stoppNr, const int antMin) {
-    nr = stoppNr; minutter = antMin;
+bool Rute::erListeGyldig(){
+    if(stoppene.size() > 1){
+        return true;
+    }
+    return false;
+}
+
+
+bool Rute::erTall(std::string nvn) {
+    return all_of(nvn.begin(), nvn.end(), ::isdigit);
 }
 
 /**
- * lesData()
+ * Sjekker om stopp er lagt til i ruta allerede
+ * 
+ * @param nr 
+ * @return true 
+ * @return false
+ * @see Stopp::hentNr() 
+ */
+bool Rute::finnesStopp(const int indeks) {
+    for (auto it = stoppene.begin(); it != stoppene.end(); it++) {
+        if ((*it)->hentNr() == indeks)
+            return true;
+    }
+    return false;
+}
+
+/**
+ * skriver rute forlengs eller baklengs
+ * 
+ * @param retning forlengs eller baklengs
+ * @see Stoppesteder::hentNavnVhaIndeks(...)
+ */
+void Rute::skrivRute(const Retning retning) {
+    int minF = 0,
+        indeks = 0,
+        totMin = 0;
+    string navn;
+    
+    if (retning == Fram) {
+        for (auto it = stoppene.begin(); it != stoppene.end(); it++) {
+            indeks = (*it)->nr;
+            minF = (*it)->minutter;
+            navn = gStoppestederBase.hentNavnVhaIndeks(indeks);
+            totMin += minF;
+            cout << setw(25) << navn << " - " << setw(2) << minF
+                 << " min fra forrige  (" << setw(3) << totMin
+                 << " min fra rutestart)\n";
+        }
+    }
+
+    if (retning == Tilbake) {
+        for (auto it = stoppene.rbegin(); it != stoppene.rend(); it++) {
+            indeks = (*it)->nr;
+            navn = gStoppestederBase.hentNavnVhaIndeks(indeks);
+            cout << setw(25) << navn << " - " << setw(2) << minF
+                    << " min fra forrige  (" << setw(3) << totMin
+                    << " min fra rutestart)\n";
+            minF = (*it)->minutter;
+            totMin += minF;
+        }
+    }
+}
+
+/**
+ * @brief - sletter siste entry i stoppene.
+ * 
+ */
+void Rute::slettData(){
+    stoppene.clear();
+}
+
+/**
+ * Leser og oppretter stopp for en ny rute
+ * 
+ * @see Stoppesteder::byttBokstaver(...)
+ * @see Stoppesteder::finnesIndex(...)
+ * @see Stoppesteder::hentNavnVhaIndex(...)
+ * @see Stoppesteder::finnEntydig(...)
+ * @see Stoppesteder::finnDuplikat(...)
+ * @see Rute::finnesStopp(...)
+ * @see Stoppested::finnesNabo(...)
+ * @see Stoppested::hentNaboIndeks(...)
+ * @see Stoppested::hentNaboTid(...)
+ * @see Stoppested::settNaboIndeks(...)
+ * @see Stoppested::settNaboTid(...)
  */
 void Rute::lesData() {
     string navn,
@@ -66,17 +182,15 @@ void Rute::lesData() {
     Stoppested* nStopp = nullptr;
     
     cout << "\nStoppested (entydig navn / tall / ENTER for å avslutte): ";
-    getline(cin, navn); //TODO fortsette her
+    getline(cin, navn); 
     while (navn.size() > 0) {  //Kjør så lenge ikke blank/enter er trykket.
         navn = gStoppestederBase.byttBokstaver(navn); // Fjerner æøåÆØÅ
         
         if (erTall(navn)) {  // SJekker om navn kun består av tall
             stoppNr = stoi(navn); //Hvis kun tall, gjør om til int
-            // Trenger en sjekk om stoppnr faktisk finnes, hvis det gjør det, gjør neste linje *
             if(gStoppestederBase.finnesIndeks(stoppNr-1)){ //@see finnesIndeks, funker dette?
             navn = gStoppestederBase.hentNavnVhaIndeks(stoppNr); // Hent navn
             }
-        //}else cout << "Stopp finnes ikke!"; //kanskje gjøres til en loop?
     }
         
         fNavn = gStoppestederBase.finnEntydig(navn); // Sjekker for entydighet
@@ -90,10 +204,8 @@ void Rute::lesData() {
                 if (nStopp->finnesNabo(naboIndeks+1)) { // Hvis nabo finnes fra før
                     naboIndeks = nStopp->hentNaboIndeks(naboIndeks+1);
                     tidTilF = nStopp->hentNaboTid(naboIndeks);
-                    // Stemmer naboindeks, eller må vi bruke en ny int her e.l. *
-                    //Sjekker foreløping bare etter 1 nabo, må endres så den kan finne alle.
                     nyStopp = new Stopp(indeks+1, tidTilF);
-                    stoppene.push_back(nyStopp); // Disse kan gjøres etter ?*
+                    stoppene.push_back(nyStopp);
                     naboIndeks = indeks;
                     cout << "\nTiden mellom stoppestedene er allerede registrert som "
                          << tidTilF << " minutter.\n";
@@ -101,7 +213,6 @@ void Rute::lesData() {
 
                 } else { // Hvis nabo ikke finnes fra før:
                     tidTilF = lesInt("Tid fra forrige stopp", 1, 10); // Leser tid til forrige nabo
-                    //indeks = gStoppestederBase.hentIndeksVhaNavn(fNavn); // Finner egen indeks
                     nStopp = gStoppestederBase.finnDuplikat(fNavn); // Finner egen peker
                     fStopp->settNaboIndeks(indeks); // Oppdaterer forrige stopps nabovektor
                     fStopp->settNaboTid(tidTilF); // Oppdaterer forrige stopps tid til nabo
@@ -113,7 +224,6 @@ void Rute::lesData() {
                 }
 
             } else { // Hvis første stopp på ruten
-                // indeks = gStoppestederBase.hentIndeksVhaNavn(fNavn); // Riktig indeks
                 nStopp = gStoppestederBase.finnDuplikat(fNavn); // Peker til riktig
                 nyStopp = new Stopp(indeks+1, 0); // Setter stopp sitt nr
                 // til å korrespondere med indeks i vector, og tid til
@@ -121,10 +231,7 @@ void Rute::lesData() {
                 stoppene.push_back(nyStopp); // Legges til listen
                 naboIndeks = indeks;
             }
-            // ?*
             nNavn = fNavn; // Setter nåværende nabo til å være forrige navn
-            //naboIndeks = indeks; // Setter nabos indeks til å være forrige indeks
-            //tidTilE = tidTilF; // Setter tid til neste stopp, til å være egen tid
             fStopp = nStopp; // Setter forrige stopp til å bli nåværende stopp
             } else
                 cout << "\nStoppet er allerede registrert på ruten!\n";
@@ -140,7 +247,23 @@ void Rute::lesData() {
 }
 
 /**
- * skrivData()
+ * skrivBeskrivelse()
+ * skriver forlengs og baklengs
+ * 
+ * @see Rute::skrivRute(...)
+ */
+void Rute::skrivBeskrivelse() {
+    cout << "Ruten:\n";
+    skrivRute(Fram);
+    cout << "\n\n";
+    skrivRute(Tilbake);
+}
+
+/**
+ * Skriver ut en rute
+ * Første-siste stopp
+ * 
+ * @see Stoppesteder::hentNavnVhaIndeks(...)
  */
 void Rute::skrivData() const {
     int startIndeks,
@@ -154,20 +277,13 @@ void Rute::skrivData() const {
     stoppNavn = gStoppestederBase.hentNavnVhaIndeks(stoppIndeks);
 
     cout << startNavn << " - " << stoppNavn;
-    // MÅ finne en eller annen måte å få ut navn i stoppested vha hjelp
-    // av nummeret som er i structen
 }
 
 /**
- * skrivTilFil(...)
+ * skriver rute til fil
  * 
- * @param ut 
- */
-void Stopp::skrivTilFil(ofstream & ut) {
-    ut << nr << ' ' << minutter << '\n';
-}
-/**
- * skrivTilFil(...)
+ * @param ut fila det skrives til
+ * @see Stopp::skrivTilFil(...)
  */
 void Rute::skrivTilFil(ofstream & ut) {
     ut << stoppene.size() << '\n';
@@ -175,93 +291,15 @@ void Rute::skrivTilFil(ofstream & ut) {
         (*it)->skrivTilFil(ut);
 }
 
-/**
- * Henter en stopps unike nr
- * 
- * @return Et stoppesteds unike nr
- */
-int Stopp::hentNr() {
-    return nr;
-}
 
-/**
- * skrivBeskrivelse()
- */
-void Rute::skrivBeskrivelse() {
-    cout << "Ruten:\n";
-    skrivRute(Fram);
-    cout << "\n\n";
-    skrivRute(Tilbake);
-}
 
-/**
- * skrivRute(...)
- * @param retning 
- */
-void Rute::skrivRute(const Retning retning) {
-    int minF = 0,
-        indeks = 0,
-        totMin = 0;
-    string navn;
-    
-    if (retning == Fram) {
-        for (auto it = stoppene.begin(); it != stoppene.end(); it++) {
-            indeks = (*it)->nr;
-            minF = (*it)->minutter;
-            navn = gStoppestederBase.hentNavnVhaIndeks(indeks);
-            totMin += minF;
-            cout << setw(25) << navn << " - " << setw(2) << minF
-                 << " min fra forrige  (" << setw(3) << totMin
-                 << " min fra rutestart)\n";
-        }
-    }
 
-    if (retning == Tilbake) {
-        for (auto it = stoppene.rbegin(); it != stoppene.rend(); it++) {
-            indeks = (*it)->nr;
-            navn = gStoppestederBase.hentNavnVhaIndeks(indeks);
-            cout << setw(25) << navn << " - " << setw(2) << minF
-                    << " min fra forrige  (" << setw(3) << totMin
-                    << " min fra rutestart)\n";
-            minF = (*it)->minutter;
-            totMin += minF;
-        }
-    }
-}
 
-bool Rute::erTall(std::string nvn) {
-    return all_of(nvn.begin(), nvn.end(), ::isdigit);
-}
 
-/**
- * @brief -sjekker om lista er mer en 1 entry.
- * 
- * @return true 
- * @return false 
- */
-bool Rute::erListeGyldig(){
-    if(stoppene.size() > 1){
-        return true;
-    }
-    return false;
-}
 
-/**
- * @brief - sletter siste entry i stoppene.
- * 
- */
-void Rute::slettData(){
-    stoppene.clear();
-}
 
-/**
- * @brief finnesStopp(...)
- * 
- */
-bool Rute::finnesStopp(const int nr) {
-    for (auto it = stoppene.begin(); it != stoppene.end(); it++) {
-        if ((*it)->hentNr() == nr)
-            return true;
-    }
-    return false;
-}
\ No newline at end of file
+
+
+
+
+
diff --git a/rute.h b/rute.h
index 6e95c2ccabe892dcf21c3f4a584dbd133da39d82..320a9a6fba8bcd7767d9d61a3e0abba724124071 100644
--- a/rute.h
+++ b/rute.h
@@ -19,8 +19,9 @@ struct Stopp {
     int nr, minutter; // Litt usikker på om denne skal deklareres slik
                       // Eller om den skal under public eller private i Rute
     Stopp(const int stoppNr, const int antMin);
-    void skrivTilFil(std::ofstream & ut);
     int hentNr();
+    void skrivTilFil(std::ofstream & ut);
+
 };
 
 /**
@@ -33,15 +34,17 @@ class Rute {
     public:
         Rute();
         Rute(std::ifstream & inn);
-        bool erTall(std::string nvn);
         bool erListeGyldig();
-        bool finnesStopp(const int nr);
+        bool erTall(std::string nvn);
+        bool finnesStopp(const int indeks);
+        void skrivRute(const Retning retning);
+        void slettData();
         virtual void lesData();
+        virtual void skrivBeskrivelse();
         virtual void skrivData() const;
         virtual void skrivTilFil(std::ofstream & ut);
-        virtual void skrivBeskrivelse();
-        void skrivRute(const Retning retning);
-        void slettData();
+        
+        
 };
 
 
diff --git a/ruter.cpp b/ruter.cpp
index 4f43e3612ebc475c4be6b119eb0d465682e9d698..56e3914b61d5278eb68b8642b37e02677c9f375b 100644
--- a/ruter.cpp
+++ b/ruter.cpp
@@ -18,6 +18,14 @@ using namespace std;
 
 extern Stoppesteder gStoppestederBase;
 
+
+/**
+ * ruteNrFinnes(...)
+ */
+bool Ruter::ruteNrFinnes(const int ruteNr) {
+    return rutene.count(ruteNr);
+}
+
 /**
  * endreRute()
  */
@@ -26,7 +34,13 @@ void Ruter::endreRute() {
 }
 
 /**
- * TODO: Funksjon som skal håndtere ulike menyvalg fra bruker
+ * Funksjon som håndterer ulike menyvalg fra bruker
+ * 
+ * @see nyRute()
+ * @see skrivAlle()
+ * @see endreRute()
+ * @see ruteBeskrivelse()
+ * @see ruteTabell()
  */
 void Ruter::handling() {
     char valg;
@@ -73,7 +87,14 @@ void Ruter::lesFraFil() {
 }
 
 /**
- * nyRute()
+ * Lager ny rute og putter den inn der det skal
+ * så lenge ruten har mer enn 1 stopp.
+ * 
+ * @see Ruter::ruteNrFinnes(...)
+ * @see Rute::lesData()
+ * @see Rute::erListeGyldig()
+ * @see Ruter::ruteBeskrivelse
+ * @see Rute::slettData()
  */
 void Ruter::nyRute() {
     int ruteNr;
@@ -82,7 +103,7 @@ void Ruter::nyRute() {
 
     if (!gStoppestederBase.tom()) { // Hvis det finnes stoppesteder registrert:
         ruteNr = lesInt("Rutenr", MINRUTER, MAXRUTER);
-        // Looper til ikke duplikat rutenr blir skrevet inn, evt gjør denne til en if-else
+        // Looper til ikke duplikat rutenr blir skrevet inn
         while (ruteNrFinnes(ruteNr)) { 
             cout << "\nDuplikat ruteNr, vennligst prøv igjen.\n";
             ruteNr = lesInt("Rutenr", MINRUTER, MAXRUTER); 
@@ -100,23 +121,21 @@ void Ruter::nyRute() {
             case 'U': nyRute = new Buss; nyRute->lesData(); break;
         }
 
-        // En funksjon for å sjekke om ruten er gyldig (list.size() > 1, return true)
-        // Hvis ruten er gyldig, legg til i mappet
-        // Hvis ugyldig rute, rydd opp i pekere *
         if(nyRute->erListeGyldig()){
             rutene[ruteNr] = nyRute;
             cout << "\nNy rute er lagt til:\n";
             ruteBeskrivelse(ruteNr);
         }else nyRute->slettData();
 
-
     } else // Hvis ingen stoppesteder registrert:
         cout << "\nIngen stopper registrert i datastrukturen, kan derfor ikke "
              << "opprette ny rute for øyeblikket.\n\n";
 }
 
 /**
- * ruteBeskrivelse()
+ * Ber om et rutenummer, skriver ut gitt rute
+ * 
+ * @see Rute::skrivBeskrivelse()
  */
 void Ruter::ruteBeskrivelse() {
     int ruteNr;
@@ -128,6 +147,13 @@ void Ruter::ruteBeskrivelse() {
         cout << "\nRuten med dette rutenr eksisterer ikke..\n";
 }
 
+/**
+ * skriver ut rute fra med sent nummer.
+ * brukes for å skrive rute når den først blir laget.
+ * 
+ * @param ruteNr -rute som skal skrives ut 
+ * @see Rute::skrivBeskrivelse
+ */
 void Ruter::ruteBeskrivelse(const int ruteNr){
     auto it = rutene.find(ruteNr);
     it->second->skrivBeskrivelse();
@@ -141,7 +167,9 @@ void Ruter::ruteTabell() {
 }
 
 /**
- * skrivAlle()
+ * skriver alle ruter som finnes.
+ * 
+ * @see Rute::skrivData
  */
 void Ruter::skrivAlle() {
     cout << "\nFølgende ruter finnes:\n";
@@ -154,7 +182,7 @@ void Ruter::skrivAlle() {
 }
 
 /**
- * skrivMeny()
+ * skriver menyen
  */
 void Ruter::skrivMeny() {
     cout << "\nFølgende kommandoer er tilgjengelige:\n"
@@ -167,6 +195,8 @@ void Ruter::skrivMeny() {
 
 /**
  * Skriver informasjon om ruter til fil
+ * 
+ * @see Rute::skrivTilFil(...)
  */
 void Ruter::skrivTilFil() {
     ofstream utfil("ruter.dt2"); // Åpner aktuell fil for skriving
@@ -180,9 +210,3 @@ void Ruter::skrivTilFil() {
     utfil.close();
 }
 
-/**
- * ruteNrFinnes(...)
- */
-bool Ruter::ruteNrFinnes(const int ruteNr) {
-    return rutene.count(ruteNr);
-}
\ No newline at end of file
diff --git a/ruter.h b/ruter.h
index 33d7ea7aa22aed0f171afa378712478d1e357406..744747db7e23b9734799ed5888294e6a0478aef7 100644
--- a/ruter.h
+++ b/ruter.h
@@ -17,6 +17,7 @@ class Ruter {
     private:
         std::map <int, Rute*> rutene;
     public:
+        bool ruteNrFinnes(const int ruteNr);
         void endreRute();
         void handling();
         void lesFraFil();
@@ -27,7 +28,7 @@ class Ruter {
         void skrivAlle();
         void skrivMeny();
         void skrivTilFil();
-        bool ruteNrFinnes(const int ruteNr);
+        
 };
 
 #endif
\ No newline at end of file