diff --git a/src/fxHarakka/Projekti.java b/src/fxHarakka/Projekti.java
deleted file mode 100644
index 437222e41799e6918acbaef0a85a9ef7c133c392..0000000000000000000000000000000000000000
--- a/src/fxHarakka/Projekti.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package fxHarakka;
-
-
-/**
- * Tää on siis luokka joka sisältää "projekti" alustajia ja sen metodeita.
- * Tehään tällein jotta asiat löytyy helposti oikeista paikoista
- *
- * eli kun käyttöliittymästä painetaan luo projekti nii hypätään tänne
- * kutsumaan aliohjelmaa luo projekti
- *
- *
- */
-public class Projekti {
-
-    private int id;             //projekti id --> ensimmäinen projekti 1
-    private String nimi;        //projektin nimi
-    private String aihe;        //en tiiä onko vielä käyttöä mut voidaan leimata projekti tietyks aiheeks
-                                //samalla aiheella sama värikoodaus käyttöliittymässä
-
-   private static int seuraavaNro = 1;
-
-    //default parametritön muodostaja
-    public Projekti() {
-        this.id = 0;
-        this.nimi = "";
-        this.aihe = "";
-    }
-
-    //parametrillinen muodostaja
-    public Projekti(int id, String nimi, String aihe){
-        this.id = id;
-        this.nimi = nimi;
-        this.aihe = aihe;
-    }
-
-    //-----------------------METODIT - PROJEKTI----------------------------
-
-    public static Projekti luoProjekti(String nimi, String aihe){       //static koska ei tarvita this
-        int nro = seuraavaNro++; // huom jälkilisäys
-        Projekti projekti = new Projekti(nro, nimi, aihe);
-
-
-        return projekti;
-
-    }
-
-    public int getId() {
-        return id;
-    }
-    public String getNimi() {
-        return nimi;
-    }
-    public String getAihe() {
-        return aihe;
-    }
-
-    @Override
-    public String toString(){
-        String strg = this.nimi + " | " + this.aihe + " | " + this.id;
-
-        return strg;
-    }
-
-    //maini testaamista varten
-    public static void main(String[] args){
-        Projekti testi1 = luoProjekti("kvantti", "fysiikka");
-        System.out.println(testi1);
-
-        Projekti testi2 = luoProjekti("Nakki", "Keitto");
-        System.out.println(testi2);                      //ID toimii
-    }
-
-
-}
diff --git a/src/fxHarakka/Projektit.java b/src/fxHarakka/Projektit.java
deleted file mode 100644
index ac1fc259302e074a93190f6c7672a073e0154d5a..0000000000000000000000000000000000000000
--- a/src/fxHarakka/Projektit.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package fxHarakka;
-
-public class Projektit {
-    private int maara;
-    private int maxMaara;
-
-
-    //-----------------------MUODOSTAJAT - PROJEKTIT----------------------------
-
-    public Projektit(int maara, int maxMaara) {
-        this.maara = maara;
-        this.maxMaara = maxMaara;
-    }
-
-    public Projektit() {
-        this.maara = 0;
-        this.maxMaara = 0;
-    }
-
-
-
-    //-----------------------METODIT - PROJEKTIT----------------------------
-
-
-    public int getMaara() {
-        return maara;
-    }
-
-    public void setMaara(int maara) {
-        this.maara = maara;
-    }
-
-    public int getMaxMaara() {
-        return maxMaara;
-    }
-
-    public void setMaxMaara(int maxMaara) {
-        this.maxMaara = maxMaara;
-    }
-
-
-}
diff --git a/src/fxHarakka/Tehtava.java b/src/fxHarakka/Tehtava.java
deleted file mode 100644
index f07d610db712944baa8c2dc7c173009ab3fe955e..0000000000000000000000000000000000000000
--- a/src/fxHarakka/Tehtava.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package fxHarakka;
-
-public class Tehtava {
-
-    private String nimi;                     //tehtävän nimi
-    //private Pvm pvm;                       //päivämäärä TODO otetaan kommenteista pois kun Pvm luokka tehty
-    //private Aika aika;                     // TODO tehään myös aika luokka
-    private int id;                          //tehtävän id numero
-    private static int seuraavaNro = 1;      //countteri missä tehtävässä mennään
-
-    /**
-     *TODO sitten kun Pvm ja Aika luokat lisätty ne pitää lisätä muodostajaan ja ainakin tällä hetkellä
-     * lisaa Tehtaa metodiin
-     */
-    //-----------------------MUODOSTAJAT - TEHTAVA----------------------------
-    //parametritön muodostaja
-    public Tehtava() {
-        this.nimi = "";
-    }
-
-    //parametrillinen muodostaja
-    public Tehtava(String nimi, int id) {
-        this.nimi = nimi;
-        this.id = id;
-    }
-
-
-    //-----------------------METODIT - TEHTAVA----------------------------
-
-    public Tehtava lisaaTehtava(String nimi, int id) {
-
-        Tehtava tehtava = new Tehtava(nimi, id);
-        return tehtava;
-
-    }
-
-    
-
-
-
-
-
-}
diff --git a/src/fxHarakka/Tehtavat.java b/src/fxHarakka/Tehtavat.java
deleted file mode 100644
index 3a3fc3afa30f583812bf64eb5641c1c703fea35e..0000000000000000000000000000000000000000
--- a/src/fxHarakka/Tehtavat.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package fxHarakka;
-
-public class Tehtavat {
-    private int maara;
-    private int maxMaara;
-
-    //-----------------------MUODOSTAJAT-TEHTAVAT----------------------------
-
-    public Tehtavat(int maara, int maxMaara) {
-        this.maara = maara;
-        this.maxMaara = maxMaara;
-    }
-
-    public Tehtavat() {
-        this.maara = 0;
-        this.maxMaara = 0;
-    }
-
-
-    //-----------------------METODIT - TEHTAVAT----------------------------
-
-    public int getMaara() {
-        return maara;
-    }
-
-    public void setMaara(int maara) {
-        this.maara = maara;
-    }
-
-    public int getMaxMaara() {
-        return maxMaara;
-    }
-
-    public void setMaxMaara(int maxMaara) {
-        this.maxMaara = maxMaara;
-    }
-}
diff --git a/src/fxHarakka/luokat/Harakka.java b/src/fxHarakka/luokat/Harakka.java
new file mode 100644
index 0000000000000000000000000000000000000000..e0adb2e2daabfcd78958df9cce78dc1b67d4abfa
--- /dev/null
+++ b/src/fxHarakka/luokat/Harakka.java
@@ -0,0 +1,13 @@
+package fxHarakka.luokat;
+
+public class Harakka {
+//harakalla on tehtavat ja projektit instanssit
+    private final Tehtavat tehtavat = new Tehtavat();
+    private final Projektit projektit = new Projektit();
+
+
+
+
+
+
+}
diff --git a/src/fxHarakka/luokat/Naytto.java b/src/fxHarakka/luokat/Naytto.java
new file mode 100644
index 0000000000000000000000000000000000000000..af29158483b67e8840ffaba8088ceacfe937511b
--- /dev/null
+++ b/src/fxHarakka/luokat/Naytto.java
@@ -0,0 +1,8 @@
+package fxHarakka.luokat;
+
+public class Naytto {
+//Naytöllä on viite harakkaan --> naytossa pitää olla instanssi harakalle
+    private final Harakka harakka = new Harakka();    //luodaan ns. uusi istunto --> voi olla useampi harakka
+                                                //jos jatkossa haluaa useamman käyttäjän
+
+}
diff --git a/src/fxHarakka/luokat/Projekti.java b/src/fxHarakka/luokat/Projekti.java
new file mode 100644
index 0000000000000000000000000000000000000000..1c595d76e87f6cf467bb7304bd1fd4b99ba0eb21
--- /dev/null
+++ b/src/fxHarakka/luokat/Projekti.java
@@ -0,0 +1,105 @@
+package fxHarakka.luokat;
+
+
+/**
+ * ----------Yksittäisen projektin luokka------------
+ * |
+ * | - Ei tiedä muista luokista mitään.
+ * | - Huolehtii yksittäisen projektin kentistä eli:
+ * |       -aihe
+ * |       -nimi
+ * |       -kesto (viikoissa)
+ * |       -suoritettu (viikoissa)
+ * | - Osaa get metodit omille attribuuteille.
+ * | - Osaa parsia itsensä merkkijonoksi
+ * --------------------------------------------------
+ */
+public class Projekti {
+
+    private String aihe;        //projektin aihealue
+    private String nimi;        //projektin nimi
+    private final int id;       //projekti id --> ensimmäinen projekti alkaa id nro 1
+    private int kesto;
+    private int suoritettu;
+    private static int seuraavaNro = 1;
+
+
+    //default parametritön muodostaja
+    public Projekti() {
+        this.id = 0;
+        this.nimi = "";
+        this.aihe = "";
+    }
+
+    //parametrillinen muodostaja
+    public Projekti(int id, String nimi, String aihe){
+        this.id = id;
+        this.nimi = nimi;
+        this.aihe = aihe;
+    }
+
+    //-----------------------METODIT - PROJEKTI----------------------------
+
+    /** aliohjelma uuden projektin luomiselle. varaa id numeron itselleen.
+     *
+     * @param nimi projektin nimi
+     * @param aihe projektin aihealue
+     *
+     * @return
+     * @example <pre name="test">
+     * #import fxHarakka.luokat.*;
+     *
+     *  Projekti testi1 = luoProjekti("kvantti", "fysiikka");
+     *  testi1.toString() === "kvantti | fysiikka | 1";
+     *
+     *  Projekti testi2 = luoProjekti("Nakki", "Keitto");
+     *  testi2.toString() === "Nakki | Keitto | 2";
+     * </pre>
+     */
+    public static Projekti luoProjekti(String nimi, String aihe){       //static koska ei tarvita this
+        int nro = seuraavaNro++; // huom jälkilisäys
+        Projekti projekti = new Projekti(nro, nimi, aihe);
+
+
+        return projekti;
+
+    }
+
+    /**
+     *
+     * @return palauttaa projektin id numeron
+     */
+    public int getId() {
+        return id;
+    }
+
+    /**
+     *
+     * @return palauttaa projektin nimen
+     */
+    public String getNimi() {
+        return nimi;
+    }
+
+    /**
+     *
+     * @return palauttaa projektin aiheen
+     */
+    public String getAihe() {
+        return aihe;
+    }
+
+    @Override
+    public String toString(){
+        String strg = this.nimi + " | " + this.aihe + " | " + this.id;
+
+        return strg;
+    }
+
+    //maini testaamista varten
+    public static void main(String[] args){
+
+    }
+
+
+}
diff --git a/src/fxHarakka/luokat/Projektit.java b/src/fxHarakka/luokat/Projektit.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6d7cb2e5f7f86cf89f5559218161d1eaea2ad94
--- /dev/null
+++ b/src/fxHarakka/luokat/Projektit.java
@@ -0,0 +1,76 @@
+package fxHarakka.luokat;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+/**---------------Projektien (monikko) luokka--------------------------------
+ * |                                                    | -Projekti         |
+ * | - lisää ja poistaa projekteja                      |                   |
+ * |                                                    |                   |
+ * | - Huolehtii listan pituuden riittävyydestä jos     |                   |
+ * |    täyttyy                                         |                   |
+ * |                                                    |                   |
+ * | - Lukee ja kirjoittaa projektit.dat tiedostoon     |                   |
+ * |                                                    |                   |
+ * | - Etsii ja lajittelee (avustajana projekti luokka) |                   |
+ */
+public class Projektit {
+    private int maara;
+    //private int maxMaara; //tätä ei näillänäkymin tarvitse johtuen tietorakenteesta
+                            //--> ei tarvitse itse huolehtia kasvatuksesta
+    private String kokoNimi = ""; //projektit nimi
+    private String tied = "";     //tiedostosijainti josta luetaan ja kirjoitetaa
+    private ArrayList<Projekti> alkiot = new ArrayList<>(); //varaa autom. oikean määrän alkioita
+
+
+    //-----------------------MUODOSTAJAT - PROJEKTIT----------------------------
+
+    /**
+     *
+     * @param maara     Nykyinen alkioiden määrä
+     * @param kokoNimi  projektikokoelman nimi
+     * @param tied      tiedostosijainti josta luetaan ja talletetaan
+     */
+    public Projektit(int maara, String kokoNimi, String tied) {
+        this.maara = maara;
+        this.kokoNimi = kokoNimi;
+        this.tied = tied;
+    }
+
+    /**
+     * Oletusmuodostaja. voidaan käyttää ylempää jos halutaan muokata ominaisuuksia kuten nimeä esim tilanteessa
+     * jossa halutaan jatkossa lisätä uusi "istunto".
+     *
+     *
+     * oletuksena luo 10 tyhjää alkioita
+     */
+    public Projektit() {
+        this.maara = 0;
+        this.kokoNimi = "Harakka";
+        this.tied = "projektit.dat";
+    }
+
+
+
+    //-----------------------METODIT - PROJEKTIT----------------------------
+
+    /**
+     *
+     * @return palauttaa tietorakenteen alkioiden määrän
+     */
+    public int getMaara() {
+        return maara;
+    }
+
+    /**
+     *
+     * @param maara asettaa tietorakenteen alkioiden määrän
+     */
+    public void setMaara(int maara) {
+        this.maara = maara;
+    }
+
+
+
+
+}
diff --git a/src/fxHarakka/luokat/Tehtava.java b/src/fxHarakka/luokat/Tehtava.java
new file mode 100644
index 0000000000000000000000000000000000000000..dbf49ac99bb03808cc0ad9c8d08c9c422cf3ad22
--- /dev/null
+++ b/src/fxHarakka/luokat/Tehtava.java
@@ -0,0 +1,138 @@
+package fxHarakka.luokat;
+
+/**
+ * ---------------------Tehtava == yhden tehtän luokka-----------------------
+ * | Vastuualueet:                                      |                   |
+ * |                                                    |                   |
+ * | - Ei tiedä muista luokista mitään                  |                   |
+ * | - Omien kenttien muokkaus pyydettäessä omista      |                   |
+ * |    kentistä                                        |                   |
+ * |        -id                                         |                   |
+ * |        -nimi                                       |                   |
+ * |        -aika                                       |                   |
+ * |        -päivä                                      |                   |
+ * |        -lisätietoa                                 |                   |
+ * |                                                    |                   |
+ * | - Osaa hyväksyä vain kentille määritellyn muodon   |                   |
+ * |  (syntaksi)                                        |                   |
+ * | - Osaa get metodit omille attribuuteille           |                   |
+ * | - Osaa muodostaa itsensä merkkijonoksi             |                   |
+ * -------------------------------------------------------------------------
+ */
+public class Tehtava {
+
+    private String nimi;                     //tehtävän nimi
+    //private Aika aika;                     // TODO tehään myös aika luokka
+    private String paiva = "";               //tehtävän viikonpäivä (voidaan tehtä Vpaiva luokka)
+    private int id;                          //tehtävän id numero
+    private String lisatieto = "";           //tehtävän lisätiedot
+
+    /**
+     *TODO sitten kun Pvm ja Aika luokat lisätty ne pitää lisätä muodostajaan ja ainakin tällä hetkellä
+     * lisaa Tehtaa metodiin
+     */
+    //-----------------------MUODOSTAJAT - TEHTAVA----------------------------
+    public Tehtava() {
+        this.nimi = "";
+        this.paiva = "";
+        this.id = 0;      //id 0 varattu tehtäville joille ei asetettu linkkiä projektiin
+        this.lisatieto = "";
+
+    }
+
+    public Tehtava(String nimi, int id) {
+        this.nimi = nimi;
+        this.paiva = "";   //päivää ei määritetty
+        this.id = id;      //id 0 varattu tehtäville joille ei asetettu linkkiä projektiin
+        this.lisatieto = "";
+    }
+
+
+    public Tehtava(String nimi, String paiva, int id, String lisatieto) {
+        this.nimi = nimi;
+        this.paiva = paiva;
+        this.id = id;      //id 0 varattu tehtäville joille ei asetettu linkkiä projektiin
+        this.lisatieto = lisatieto;
+    }
+
+
+    //-----------------------METODIT - TEHTAVA----------------------------
+
+    /**
+     * asettaa tehtävälle nimen
+     * @param nimi
+     */
+   public void setNimi(String nimi){
+        this.nimi = nimi;
+
+   }
+
+    /**
+     * voidaan tehdä jos on aikaa niin Vpaiva luokka joka ottaa vastaan vaan viikonpäiviä
+     * formaatilla Ma,Ti,Ke,To,Pe,La,Su
+     * mutta tällä hetkellä ottaa vastaan String
+     */
+    public void setPaiva(String paiva){
+        String[] paivat = {"Ma", "Ti", "Ke", "To", "Pe", "La", "Su"};
+        for (String i : paivat){
+            if (paiva.equalsIgnoreCase(i)) this.paiva = paiva; //ottaa vastaan vaan päivän ja ei välitä asusta
+        }
+    }
+
+    /**
+     * asettaa tehtävälle id numeron
+     */
+    public void setId(){
+
+
+    }
+
+    /**
+     *
+     * @return tehtävän lisätiedot String muodossa
+     */
+    public String getLisatieto(){
+
+        return this.lisatieto;
+    }
+
+    /**
+     * lisää tehtävälle lisätietoaja
+     *
+     * @param lisatieto String: lisättävät lisätiedot
+     * @param append jos true niin append modessa eli lisätään vanhan tekstin perään
+     *               jos false niin korvataan vanha.
+     * @example <pre name="test">
+     * #import fxHarakka.luokat.Tehtava;
+     * Tehtava teht1 = new Tehtava();
+     * teht1.setLisatieto("testi", false);
+     * teht1.getLisatieto() === "testi";
+     * teht1.setLisatieto("testi2", false);
+     * teht1.getLisatieto() === "testi2";
+     * teht1.setLisatieto("testi3", true);
+     * teht1.getLisatieto() === "testi2testi3";
+     * </pre>
+     */
+    public void setLisatieto(String lisatieto, boolean append){
+        //append moodi päällä lisää vanhan perään
+        if (append) {
+            String lisattava = "";
+            lisattava = this.getLisatieto() + lisatieto;
+            this.lisatieto = lisattava;
+        }else {
+            //ilman append moodia korvaa vanhan uudella lisätiedolla
+            this.lisatieto = lisatieto;
+        }
+
+
+
+
+    }
+
+    
+
+
+
+
+
+}
diff --git a/src/fxHarakka/luokat/Tehtavat.java b/src/fxHarakka/luokat/Tehtavat.java
new file mode 100644
index 0000000000000000000000000000000000000000..594587a857275a5bc7feb18f680849f7b9f92405
--- /dev/null
+++ b/src/fxHarakka/luokat/Tehtavat.java
@@ -0,0 +1,50 @@
+package fxHarakka.luokat;
+
+import java.util.ArrayList;
+
+/**
+ * --------------------Tehtavat == (monikko) tehtävien luokka----------------
+ * |                                                    | - Tehtävä         |
+ * | -Lisää ja poistaa tehtäviä.                        |                   |
+ * | -Huolehtii listan pituuden riittävyydestä jos      |                   |
+ *    täyttyy.                                          |                   |
+ * | -Lukee ja kirjoittaa tapahtumat.dat tiedostoa.     |                   |
+ * | -Etsii ja lajittelee(avustaja tehtävä).            |                   |
+ * |                                                    |                   |
+ * |                                                    |                   |
+ * --------------------------------------------------------------------------
+ */
+public class Tehtavat {
+    private int maara;
+    private int id;
+    private ArrayList<Tehtava> alkiot = new ArrayList<>();
+
+    //-----------------------MUODOSTAJAT-TEHTAVAT----------------------------
+
+    public Tehtavat(int maara, int maxMaara) {
+        this.maara = maara;
+
+    }
+
+    public Tehtavat() {
+        this.maara = 0;
+
+    }
+
+
+    //-----------------------METODIT - TEHTAVAT----------------------------
+
+    /**
+     *
+     * @return palauttaa tehtävien määrän
+     */
+    public int getMaara() {
+        return maara;
+    }
+
+
+
+
+
+
+}
diff --git a/src/fxHarakka/luokat/test/ProjektiTest.java b/src/fxHarakka/luokat/test/ProjektiTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..43f3750205a1b1a5413f7d674c087df87b312eee
--- /dev/null
+++ b/src/fxHarakka/luokat/test/ProjektiTest.java
@@ -0,0 +1,28 @@
+package fxHarakka.luokat.test;
+// Generated by ComTest BEGIN
+import fxHarakka.luokat.*;
+import static org.junit.Assert.*;
+import org.junit.*;
+import static fxHarakka.luokat.Projekti.*;
+// Generated by ComTest END
+
+/**
+ * Test class made by ComTest
+ * @version 2025.03.19 17:59:29 // Generated by ComTest
+ *
+ */
+@SuppressWarnings({ "PMD" })
+public class ProjektiTest {
+
+
+
+  // Generated by ComTest BEGIN
+  /** testLuoProjekti46 */
+  @Test
+  public void testLuoProjekti46() {    // Projekti: 46
+    Projekti testi1 = luoProjekti("kvantti", "fysiikka"); 
+    assertEquals("From: Projekti line: 50", "kvantti | fysiikka | 1", testi1.toString()); 
+    Projekti testi2 = luoProjekti("Nakki", "Keitto"); 
+    assertEquals("From: Projekti line: 53", "Nakki | Keitto | 2", testi2.toString()); 
+  } // Generated by ComTest END
+}
\ No newline at end of file
diff --git a/src/fxHarakka/luokat/test/TehtavaTest.java b/src/fxHarakka/luokat/test/TehtavaTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b40d2f683303ce6ccad013128e858f2d5968227e
--- /dev/null
+++ b/src/fxHarakka/luokat/test/TehtavaTest.java
@@ -0,0 +1,31 @@
+package fxHarakka.luokat.test;
+// Generated by ComTest BEGIN
+import fxHarakka.luokat.Tehtava;
+import static org.junit.Assert.*;
+import org.junit.*;
+import fxHarakka.luokat.*;
+// Generated by ComTest END
+
+/**
+ * Test class made by ComTest
+ * @version 2025.03.19 20:02:29 // Generated by ComTest
+ *
+ */
+@SuppressWarnings({ "PMD" })
+public class TehtavaTest {
+
+
+
+  // Generated by ComTest BEGIN
+  /** testSetLisatieto105 */
+  @Test
+  public void testSetLisatieto105() {    // Tehtava: 105
+    Tehtava teht1 = new Tehtava(); 
+    teht1.setLisatieto("testi", false); 
+    assertEquals("From: Tehtava line: 109", "testi", teht1.getLisatieto()); 
+    teht1.setLisatieto("testi2", false); 
+    assertEquals("From: Tehtava line: 111", "testi2", teht1.getLisatieto()); 
+    teht1.setLisatieto("testi3", true); 
+    assertEquals("From: Tehtava line: 113", "testi2testi3", teht1.getLisatieto()); 
+  } // Generated by ComTest END
+}
\ No newline at end of file