diff --git a/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java
new file mode 100644
index 0000000000000000000000000000000000000000..709fc310dd3a387a351b8e128a02edb104e36bf0
--- /dev/null
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java
@@ -0,0 +1,42 @@
+package fi.utu.tech.ooj.exercise0;
+
+public class Kirja {
+    private String kirjanNimi;
+    private String kirjailijanNimi;
+    private int julkaisuVuosi;
+
+    public Kirja(String kirjanNimi, String kirjailijanNimi, int julkaisuVuosi) {
+        this.kirjanNimi = kirjanNimi;
+        this.kirjailijanNimi = kirjailijanNimi;
+        this.julkaisuVuosi = julkaisuVuosi;
+    }
+
+    public String getKirjanNimi() {
+        return kirjanNimi;
+    }
+
+    public String getKirjailijanNimi() {
+        return kirjailijanNimi;
+    }
+
+    public int getJulkaisuVuosi() {
+        return julkaisuVuosi;
+    }
+
+    public void setKirjanNimi(String kirjanNimi) {
+        this.kirjanNimi = kirjanNimi;
+    }
+
+    public void setKirjailijanNimi(String kirjailijanNimi) {
+        this.kirjailijanNimi = kirjailijanNimi;
+    }
+
+    public void setJulkaisuVuosi(int julkaisuVuosi) {
+        this.julkaisuVuosi = julkaisuVuosi;
+    }
+    @Override
+    public String toString(){
+        return "Kirja: " + this.kirjanNimi+ "\n" + "Kirjailija: " + this.kirjailijanNimi + "\n"
+                + "Julkaisuvuosi: " + this.julkaisuVuosi + "\n";
+    }
+}
diff --git a/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
new file mode 100644
index 0000000000000000000000000000000000000000..9f97f69cc2145a1695dcc0c1113f6e270ed983f8
--- /dev/null
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
@@ -0,0 +1,66 @@
+package fi.utu.tech.ooj.exercise0;
+
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
+
+public class KirjaKokoelma {
+    private String kokoelmanOmistaja;
+    private ArrayList<Kirja> kirjaListaus;
+
+    public KirjaKokoelma(String kokoelmanOmistaja) {
+        this.kokoelmanOmistaja = kokoelmanOmistaja;
+        this.kirjaListaus = new ArrayList<Kirja>();
+    }
+
+    public String getKokoelmanOmistaja() {
+        return kokoelmanOmistaja;
+    }
+
+    public ArrayList<Kirja> getKirjaListaus() {
+        return kirjaListaus;
+    }
+
+    public void setKokoelmanOmistaja(String kokoelmanOmistaja) {
+        this.kokoelmanOmistaja = kokoelmanOmistaja;
+    }
+    public void lisaaKirja(Kirja uusiKirja){
+        this.kirjaListaus.add(uusiKirja);
+    }
+    public void tulostaKokoelma(PrintStream out){
+        if (kirjaListaus.isEmpty()){
+            out.println("Kokoelma on tyhjä.");
+        }else {
+            for (Kirja kirja : kirjaListaus){
+                out.println(kirja.toString());
+            }
+        }
+    }
+    public  List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException{
+        if(hakusana == null || hakusana.isEmpty() || kentta == null){
+            throw new IllegalArgumentException("Hakusana tai kenttä on tyhjä");
+        }
+        List<Kirja> kirjat = new ArrayList<>();
+
+        for (Kirja kirja : kirjaListaus) {
+            String tieto = "";
+            switch (kentta) {
+                case NIMI:
+                    tieto = kirja.getKirjanNimi();
+                    break;
+                case KIRJAILIJA:
+                    tieto = kirja.getKirjailijanNimi();
+                    break;
+                case JULKAISUVUOSI:
+                    tieto = String.valueOf(kirja.getJulkaisuVuosi());
+                    break;
+                default:
+                    break;
+            }
+            if (tieto.contains(hakusana)){
+                kirjat.add(kirja);
+            }
+        }
+        return kirjat;
+    }
+}
diff --git a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
index 783d3d0cf21955651017c6638f3eb43bf992a6b9..dfffa62cb23fb0503622b91a9d2752bc7acc023c 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
@@ -12,19 +12,46 @@ public class Main {
      * Kirjoita tähän tehtävän 4 ratkaisu. Rutiinin signatuuria ei saa muuttaa. Aloita tehtävä poistamalla
      * kommenttimerkit alla olevan rutiinin rungon ympäriltä.
      */
-    /*public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki) {
-
-    }*/
-
+    public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki) {
+        Scanner lukija = new Scanner(System.in);
+        ArrayList<String> vastaukset = new ArrayList<String>();
+        int i = 0;
+        while (i<kysyttavat.length){
+            System.out.print("Anna " +kysyttavat[i]+": ");
+            String vastaus = lukija.nextLine();
+
+            if (vastaus.equals(lopetusmerkki)){
+                break;
+            }else {
+                vastaukset.add(vastaus);
+                i++;
+            }
+        }
+        System.out.println();
+        return vastaukset;
+    }
 
     /*
      * Kirjoita tähän tehtävän 5 ratkaisu. Rutiinin signatuuria ei saa muuttaa. Aloita tehtävä poistamalla
      * kommenttimerkit alla olevan rutiinin rungon ympäriltä.
      */
-
-    /*public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
-
-    }*/
+    public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
+        String[] kysymykset = {"kirjan nimi", "kirjailijan nimi", "julkaisuvuosi"};
+        String[] uusiNimi ={"Kokoelmanomistaja"};
+        ArrayList<String> nimi = kysyTietoja(uusiNimi,lopetusmerkki);
+        KirjaKokoelma uusiKokoelma = new KirjaKokoelma(nimi.get(0));
+
+        while(true){
+            ArrayList<String> tiedot = kysyTietoja(kysymykset,lopetusmerkki);
+            if (tiedot.size()<3){
+                break;
+            }else {
+                Kirja uusiKirja = new Kirja(tiedot.get(0),tiedot.get(1),Integer.parseInt(tiedot.get(2)));
+                uusiKokoelma.lisaaKirja(uusiKirja);
+            }
+        }
+        return uusiKokoelma;
+    }
 
     /**
      * Main class.
@@ -32,19 +59,18 @@ public class Main {
      * @param args Command line arguments
      */
     public static void main(String[] args) {
-        /*
-         * Testin jälkeen alla olevan rivin voi joko kommentoida tai poistaa.
-         */
-        System.out.println("*** Harjoitustyöpohja käynnistyy ***");
-
-        //Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia
-
-
-        //Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia
 
+        KirjaKokoelma uusiKokoelma = luoKokoelma("lopeta");
+        uusiKokoelma.tulostaKokoelma(System.out);
+        try {
+            List<Kirja> loydetytKirjat = uusiKokoelma.etsiKirjat("harry", KirjanTiedot.KIRJAILIJA);
+            for (Kirja kirja : loydetytKirjat) {
+                System.out.println(kirja.toString());
+            }
+        } catch (IllegalArgumentException e) {
+            System.out.println(e.getMessage());
+        }
 
-        //Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia
-        //Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa.
 
     }
 }