diff --git a/puntti/Puntti.jar b/puntti/Puntti.jar
index 6db2e2c9ba350029eed79af235b0eb702a0bc941..d3a355d638f17ffdc78efa28f3eb31cb614c6e26 100644
Binary files a/puntti/Puntti.jar and b/puntti/Puntti.jar differ
diff --git a/puntti/batman/liikkeet.dat b/puntti/batman/liikkeet.dat
new file mode 100644
index 0000000000000000000000000000000000000000..6a69d3d435f01320acec0f49dee895e78e682997
--- /dev/null
+++ b/puntti/batman/liikkeet.dat
@@ -0,0 +1,2 @@
+1|Kyykky3|leveä|2|Syvä|Tanko
+2|Kyykky12|neutraali|9|Syvä|Tanko
diff --git a/puntti/src/puntti/Liike.java b/puntti/src/puntti/Liike.java
index fbcdfb0c8f1aa517562e31679a1dc82ce3d7550c..db16024ffce621f78992a3aea17193d56962f714 100644
--- a/puntti/src/puntti/Liike.java
+++ b/puntti/src/puntti/Liike.java
@@ -113,6 +113,26 @@ public class Liike {
     }
     
     
+    
+    /**
+     * palauttaa liikkeen tiedot merkkijonona jonka voi tallentaa tiedostoon.
+     * @return liike tolppaeroteltuna merkkijonona
+     * @example
+     * <pre name="test">
+     *  Liike liike = new Liike();
+     *  liike.parse("7 | kyykky | leveä");
+     *  liike.toString.startsWith("7|kyykky|leveä") === true;
+     */
+    @Override
+    public String toString() {
+        return "" +
+                getLid() + "|" +
+                liike + "|" +
+                oteLeveys + "|" +
+                stoppi + "|" +
+                syvyys + "|" +
+                suoritusValine;
+    }
 
     /**
      * @param args ei käytössä
diff --git a/puntti/src/puntti/Liikkeet.java b/puntti/src/puntti/Liikkeet.java
index bd21f1767d97c56ea567d0de87d53c74795fc563..d33da0ae5fcc30212ecc6b6de2834dbf558a8998 100644
--- a/puntti/src/puntti/Liikkeet.java
+++ b/puntti/src/puntti/Liikkeet.java
@@ -1,5 +1,10 @@
 package puntti;
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+
 /**
  * 
  * |------------------------------------------------------------------------|
@@ -86,6 +91,24 @@ public class Liikkeet {
         return lkm;
     }
     
+    /**
+     * @param hakemisto mihin hakemistoon tehdään uusi tiedosto
+     * @throws SailoException jos tallentaminen ei onnistu
+     */
+    public void tallenna(String hakemisto) throws SailoException {
+        File tiedosto = new File(hakemisto + "/liikkeet.dat");
+        try (PrintStream fo = new PrintStream(new FileOutputStream(tiedosto, false))){
+                for (int i=0; i<this.getLkm();i++) {
+                    Liike liike = this.anna(i);
+                    fo.println(liike.toString());
+                }
+                
+        }catch (FileNotFoundException e) {
+        
+            throw new SailoException("Tiedosto "+ tiedosto.getAbsolutePath() + " ei löydy");
+        }
+    }
+    
     
     /**
      * @param args ei käytössä
@@ -118,6 +141,11 @@ public class Liikkeet {
             System.out.println(ex.getMessage());
         }
         
+        try {
+            liikkeet.tallenna("batman");
+        } catch (SailoException e) {
+            System.err.println(e.getMessage());
+        }
        
         
         
diff --git a/puntti/src/puntti/Puntti.java b/puntti/src/puntti/Puntti.java
index 380b969cb50d08f4504651d709cab86adee7b5e9..b9b23c33aeaaf7730a564f5784121f3f2e3540ca 100644
--- a/puntti/src/puntti/Puntti.java
+++ b/puntti/src/puntti/Puntti.java
@@ -123,6 +123,15 @@ public class Puntti {
     }
     
     
+    /**
+     * tallentaa kerhon tiedot tiedostoon
+     * @param nimi käyttäjän hakemiston nimi
+     * @throws SailoException jos tallennus ei onnistu
+     */
+    public void tallenna(String nimi) throws SailoException {
+        liikkeet.tallenna(nimi);
+    }
+    
 
     /**
      * Testiohjelma Puntti.javalle