diff --git a/Ohj2HT/src/Luokat/Kalenteri.java b/Ohj2HT/src/Luokat/Kalenteri.java
index 72d0aa1c9425868af05f3b96990f010e0a1a5729..1ebcf53103ce4d8153c2b69520102fd2e682b8e0 100644
--- a/Ohj2HT/src/Luokat/Kalenteri.java
+++ b/Ohj2HT/src/Luokat/Kalenteri.java
@@ -1,6 +1,6 @@
 package Luokat;
 
-import fi.jyu.mit.fxgui.Dialogs;
+import java.io.File;
 
 /**
  * Pääluokka sisältää kaikki reissut ja samalla kaikki saaliit ja vieheet sekä laskurit
@@ -12,6 +12,7 @@ public class Kalenteri {
     private Tulkki lajit;
     private Tulkki vieheTulkki;
     private Tulkki kokoTulkki;
+
     public Kalenteri() {
         String dir = System.getProperty("user.dir");
         lajit = new Tulkki(dir + "/../lajit.dat");
@@ -47,9 +48,9 @@ public class Kalenteri {
         TiedostonHiplailija saalisLaskuri = new TiedostonHiplailija(System.getProperty("user.dir")+ "/../kalaLaskuri.dat");
         TiedostonHiplailija vieheet = new TiedostonHiplailija(System.getProperty("user.dir")+ "/../vieheLaskuri.dat");
         System.out.println(System.getProperty("user.dir"));
-        Tulkki lajit = new Tulkki(System.getProperty("user.dir") + "/../lajit.dat");
-        Tulkki vieheTulkki = new Tulkki(System.getProperty("user.dir") + "/../vieheTyypit.dat");
-        Tulkki kokoTulkki = new Tulkki(System.getProperty("user.dir") + "/../koot.dat");
+        this.lajit = new Tulkki(System.getProperty("user.dir") + "/../lajit.dat");
+        this.vieheTulkki = new Tulkki(System.getProperty("user.dir") + "/../vieheTyypit.dat");
+        this.kokoTulkki = new Tulkki(System.getProperty("user.dir") + "/../koot.dat");
         for (int i = aluksi; i < reissumaara; i++){
             System.out.println(reissut.getReissut().get(i));
             reissu.kirjoita(reissut.getReissut().get(i).toString());
@@ -70,4 +71,33 @@ public class Kalenteri {
         vieheet.sulje();
         return true;
     }
+
+    public boolean tallennaTietyt() {
+        this.lajit = new Tulkki(System.getProperty("user.dir") + "/../lajit.dat");
+        this.vieheTulkki = new Tulkki(System.getProperty("user.dir") + "/../vieheTyypit.dat");
+        this.kokoTulkki = new Tulkki(System.getProperty("user.dir") + "/../koot.dat");
+        TiedostonHiplailija reissu = new TiedostonHiplailija(System.getProperty("user.dir") + "/../reissut.dat",false);
+        TiedostonHiplailija saalis = new TiedostonHiplailija(System.getProperty("user.dir")+ "/../saaliit.dat",false);
+        TiedostonHiplailija saalisLaskuri = new TiedostonHiplailija(System.getProperty("user.dir")+ "/../kalaLaskuri.dat",false);
+        TiedostonHiplailija vieheet = new TiedostonHiplailija(System.getProperty("user.dir")+ "/../vieheLaskuri.dat",false);
+        for (Reissu r : reissut.getReissut()) {
+            System.out.println(r);
+            reissu.kirjoita(r.toString());
+
+            for (Saalis s : r.getSaaliit()) {
+                saalis.kirjoita(s.tiedotTallenusMuodossa(lajit,vieheTulkki,kokoTulkki));
+            }
+        }
+        for (String s : kalaLaskuri.tallennusTiedot()){
+            saalisLaskuri.kirjoita(s);
+        }
+        for (String s : vieheLaskuri.tallennusTiedot()){
+            vieheet.kirjoita(s);
+        }
+        reissu.sulje();
+        saalis.sulje();
+        saalisLaskuri.sulje();
+        vieheet.sulje();
+        return true;
+    }
 }
diff --git a/Ohj2HT/src/Luokat/Laskuri.java b/Ohj2HT/src/Luokat/Laskuri.java
index 3566abe0e18d3edb366e4da474a2f631af86c055..d731ecf4e5fce24f6af9ae36a0577e9b7c9fe8a1 100644
--- a/Ohj2HT/src/Luokat/Laskuri.java
+++ b/Ohj2HT/src/Luokat/Laskuri.java
@@ -59,6 +59,10 @@ public class Laskuri {
         arvot.put(id,1);
     }
 
+    public void vahenna(int id){
+        arvot.put(id, arvot.get(id)-1);
+    }
+
 
 
     public List<StringAndObject<String>> getArvotAsList(){
diff --git a/Ohj2HT/src/Luokat/Reissu.java b/Ohj2HT/src/Luokat/Reissu.java
index 27e989863899d3fcfbef93862ba945c0e3f8812e..9137317aa3d63f537b3020256830a966f75f0cac 100644
--- a/Ohj2HT/src/Luokat/Reissu.java
+++ b/Ohj2HT/src/Luokat/Reissu.java
@@ -30,7 +30,6 @@ private boolean poistetaanko;
 		this.poistetaanko = false;
 	}
 
-
 	
     public int getTag() {
         return reissunTag;
diff --git a/Ohj2HT/src/Luokat/Reissut.java b/Ohj2HT/src/Luokat/Reissut.java
index fcc0756f61c031756019f62a3f7aa5e3de541d8e..4bc836827bfd9b130d44d8b7c678a85fab01f342 100644
--- a/Ohj2HT/src/Luokat/Reissut.java
+++ b/Ohj2HT/src/Luokat/Reissut.java
@@ -44,9 +44,6 @@ public class Reissut {
 				if (saalis.getReissunTagi() == a.getTag()) {
 					apuri.add(saalis);
 				}
-				if (saalis.getReissunTagi() > a.getTag()) {
-					break;
-				}
 			}
 			a.setSaaliit(apuri);
 			this.reissut.add(a);
diff --git a/Ohj2HT/src/Luokat/TiedostonHiplailija.java b/Ohj2HT/src/Luokat/TiedostonHiplailija.java
index 4e1fc05eeb0b446caf34514b2c44d020d9f5615d..dba0117ab3f7ec892f01fb841d92b63314c82e67 100644
--- a/Ohj2HT/src/Luokat/TiedostonHiplailija.java
+++ b/Ohj2HT/src/Luokat/TiedostonHiplailija.java
@@ -10,9 +10,11 @@ public class TiedostonHiplailija {
 
 	private PrintStream kirjoittaja;
 	private Scanner lukija;
+	private String tiedosto;
 	
 	public TiedostonHiplailija(String tiedosto) {
 		 try{
+			 this.tiedosto = tiedosto;
 			 this.kirjoittaja = new PrintStream(new FileOutputStream(tiedosto, true));
 			 this.lukija = new Scanner(new FileInputStream(new File(tiedosto)));
 			 
@@ -20,6 +22,17 @@ public class TiedostonHiplailija {
 	            System.err.println("Tiedosto ei aukea: " + ex.getMessage());
 	        }
 	}
+
+	public TiedostonHiplailija(String tiedosto, boolean appendataanko){
+		try{
+			this.tiedosto = tiedosto;
+			this.kirjoittaja = new PrintStream(new FileOutputStream(tiedosto, appendataanko));
+			this.lukija = new Scanner(new FileInputStream(new File(tiedosto)));
+
+		} catch (FileNotFoundException ex) {
+			System.err.println("Tiedosto ei aukea: " + ex.getMessage());
+		}
+	}
 	
 	public void kirjoita(String sisalto) {
 		kirjoittaja.println(sisalto);
@@ -38,14 +51,15 @@ public class TiedostonHiplailija {
 		this.lukija.close();
 	}
 
-public List<String> lueRivit() {
+	public List<String> lueRivit() {
 	List<String> t = new ArrayList<>(); 
 	 while (lukija.hasNextLine()) {
 		 String s = lukija.nextLine();
 		 if (!s.startsWith(";") && !s.isEmpty()) t.add(s);
 	 }
 	 return t;
-}
+	}
+
 
 	public static void main(String[] args) {
 		TiedostonHiplailija t = new TiedostonHiplailija(System.getProperty("user.dir") + "/../reissut.dat");
diff --git a/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java b/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java
index 6979690f9224c531e6452ad82b5e899daf1e5400..3850fbd18d800b71313e58f8f07a2fa787316cb6 100644
--- a/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java
+++ b/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java
@@ -2,6 +2,7 @@ package fxKalenteri;
 import java.awt.*;
 
 import fi.jyu.mit.fxgui.*;
+import javafx.application.Platform;
 import javafx.beans.property.SimpleIntegerProperty;
 import javafx.beans.property.SimpleStringProperty;
 import javafx.collections.FXCollections;
@@ -36,6 +37,7 @@ public class KalenteriGUIController implements Initializable {
     private SimpleIntegerProperty saalismaara = new SimpleIntegerProperty();
     private SimpleStringProperty parasViehe = new SimpleStringProperty();
     private int aluksi;
+    private boolean onkoPoistettu = false;
     private ObservableList<StringAndObject<String>> lista;
     @FXML private void handleTallenna() {
         tallenna();
@@ -91,7 +93,7 @@ public class KalenteriGUIController implements Initializable {
      * </pre>
      */
     private void tekstienPaivitys() {
-        Saaliisi.setItems(FXCollections.observableArrayList(kalenteri.getKalaLaskuri().getArvotAsList()));
+        Platform.runLater(()-> Saaliisi.setItems(FXCollections.observableArrayList(kalenteri.getKalaLaskuri().getArvotAsList())));
         reissumaara.set(kalenteri.getReissut().getReissut().size());
         saalismaara.set(kalenteri.getKalaLaskuri().getSumma());
         int paras = kalenteri.getVieheLaskuri().getSuurinId();
@@ -102,9 +104,15 @@ public class KalenteriGUIController implements Initializable {
     }
 
     private void tallenna() {
-        Dialogs.showMessageDialog("Tallennetetaan! Mutta ei toimi vielä");
         kirjoitaLisaaReissu();
         kalenteri.getReissut().sort();
+        if (onkoPoistettu){
+            if (kalenteri.tallennaTietyt()){
+                Dialogs.showMessageDialog("Tallennus onnistui!");
+                aluksi = reissumaara.get();
+                return;
+            }
+        }
         if ( reissumaara.get() - aluksi > 0){
             if (kalenteri.tallenna(aluksi, reissumaara.get())) {
             Dialogs.showMessageDialog("Tallennus onnistui!");
@@ -151,9 +159,13 @@ public class KalenteriGUIController implements Initializable {
         
         // Poistaminen
         if (valittuReissu.getpoistetaanko()) {
+            onkoPoistettu = true;
         	System.out.println("Ennen poistoa " + kalenteri.getReissut().getReissut().size());
              System.out.println(valittuReissu.getpoistetaanko());
-             
+            for (Saalis s: valittuReissu.getSaaliit()){
+                kalenteri.getKalaLaskuri().vahenna(kalenteri.getLajiTulkki().getIdFromValue(s.getLaji()));
+                kalenteri.getVieheLaskuri().vahenna(kalenteri.getVieheTulkki().getIdFromValue(s.getViehe().tyyppi()));
+            }
             kalenteri.getReissut().removeReissu();
             System.out.println("Jälkeen " + kalenteri.getReissut().getReissut().size());
             List<Reissu> r = kalenteri.getReissut().getReissut();
diff --git a/kalaLaskuri.dat b/kalaLaskuri.dat
index 251ca303eb2b6dd98f1a1c441ef49bd93ecdd812..fbb0867299c6ac4d1d3aca497a88bcc152a77e54 100644
--- a/kalaLaskuri.dat
+++ b/kalaLaskuri.dat
@@ -1,27 +1,5 @@
-; saatujen kalalajien määrä, kenttien järjestys seuraava
-; lajinId|määrä
-
-1|3
-2|2
-4|1
-5|1
-1|3
-2|2
-3|1
-4|1
-5|1
-1|3
+1|2
 2|2
 3|1
 4|1
 5|2
-1|3
-2|2
-3|2
-4|1
-5|2
-1|3
-2|3
-3|2
-4|1
-5|2
diff --git a/reissut.dat b/reissut.dat
index 0a5cd889122642f1fa19ae60a1f16bede3783a25..719b3f95e18378a0027bed5ecfbbbfc11a4f9a69 100644
--- a/reissut.dat
+++ b/reissut.dat
@@ -1,9 +1,6 @@
-; Kenttien järjestys tiedostossa on seuraava:
-; tag|PVM|Sijainti|Keli
-
-1|12.03.2025|Muurame|lumi sade
-2|11.05.2025|Laukaa|aurinkoinen
 4|17.11.2025|Vuontee|aurinkoinen
 5|16.11.2025|Tikkakoski|sateinen
+2|11.05.2025|Laukaa|aurinkoinen
+4|20.03.2025|Keljo|aurinkoinen
 6|18.03.2025|Muurame|Aurinkoinen
 3|12.03.2024|Laukaa|Pilvinen
diff --git a/saaliit.dat b/saaliit.dat
index 947805a7d655be2fc89d84008bf517b13b3e84f9..7fc46485ca261a3416bd8a53262f6a8959c980ba 100644
--- a/saaliit.dat
+++ b/saaliit.dat
@@ -1,17 +1,8 @@
-; Kenttien järjestys tiedostossa on seuraava:
-; saaliinId|laji|koko|ReissuTagi|vieheentyyppi|vieheenväri
-
-1|1|1|1|1|sinine
-2|1|3|2|2|Fire tiger
-3|2|1|2|1|hopea
-4|4|1|3|1|vihreä
 5|1|3|4|3|sininen
 6|2|1|4|1|hopea
 7|5|1|5|1|kupari
+2|1|3|2|2|Fire tiger
+3|2|1|2|1|hopea
+5|5|1|4|3|musta
 8|3|2|6|1|hopeinen
 4|4|1|3|1|vihreä
-4|4|1|3|1|vihreä
-4|4|1|3|1|vihreä
-4|4|1|3|1|vihreä
-4|4|1|3|1|vihreä
-4|4|1|3|1|vihreä
diff --git a/vieheLaskuri.dat b/vieheLaskuri.dat
index 3d8d94b5703446d6e98ac59b8ad5263216f11411..c088711a92b2e697158b3f80fef3924f48e054af 100644
--- a/vieheLaskuri.dat
+++ b/vieheLaskuri.dat
@@ -1,18 +1,3 @@
-; Kenttien järjestys tiedostossa seuraava
-; Id|määrä
-
-1|5
-2|2
-3|1
-1|6
-2|2
-3|1
-1|6
-2|2
-3|2
-1|6
-2|3
-3|2
-1|6
+1|3
 2|4
 3|2