diff --git a/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java
index 1abeff94b160d34cdd1093537cf7c3e9d76e588f..3edfa7d54bf71bda28144b76fbfb0f73e9e9877d 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java
@@ -12,38 +12,26 @@ public class Kirja {
         this.julkaisuVuosi = julkaisuVuosi;
     }
 
-    /*
-    getters
-    */
-
-    private String getKirjanNimi(){
+    // Getters & setters
+    public String getKirjanNimi(){
         return kirjanNimi;
     }
-
-    private String getKirjailijanNimi(){
+    public String getKirjailijanNimi(){
         return kirjailijanNimi;
     }
-
-    private int getJulkaisuVuosi(){
+    public int getJulkaisuVuosi(){
         return julkaisuVuosi;
     }
-
-    /*
-    setters
-    */
-
     private void setKirjanNimi(String uusiNimi){
         this.kirjanNimi = uusiNimi;
     }
-
     private void setKirjailijanNimi(String uusiKirjailijanNimi){
         this.kirjailijanNimi = uusiKirjailijanNimi;
     }
-
     private void setJulkaisuVuosi (int uusiVuosi){
         this.julkaisuVuosi = uusiVuosi;
     }
-
+    // getters ja setters loppuu
     public String toString(){
         String kirjanNimi = this.kirjanNimi;
         String kirjailija = this.kirjailijanNimi;
diff --git a/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
index 4389a412dcc3f5d705edde14bc4b4d99310c5d46..edac2809b381ff7d9063e5be6ae7e188f9176e8f 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
@@ -45,7 +45,40 @@ public class KirjaKokoelma {
     }
 
     public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException{
+        ArrayList<Kirja> kirjalistaus = this.getKirjaListaus();
+        ArrayList<Kirja> vaustausLista = new ArrayList<>();
 
-        return null;
+        if(hakusana == null || hakusana.isEmpty() || kentta == null){
+            throw new IllegalArgumentException("Hakusanaa tai kenttää ei annettu");
+        }
+
+        switch (kentta){
+            case NIMI:
+                kirjalistaus.forEach(kirja -> {
+                    String kirjanNimi = kirja.getKirjanNimi();
+                    if(kirjanNimi.contains(hakusana)){
+                        vaustausLista.add(kirja);
+                    }
+                });
+                break;
+            case KIRJAILIJA:
+                kirjalistaus.forEach(kirja -> {
+                    String kirjailijanNimi = kirja.getKirjailijanNimi();
+                    if(kirjailijanNimi.contains(hakusana)){
+                        vaustausLista.add(kirja);
+                    }
+                });
+                break;
+            case JULKAISUVUOSI:
+                kirjalistaus.forEach(kirja -> {
+                    String kirjanJulkaisuvuosi = String.valueOf(kirja.getJulkaisuVuosi());
+                    if(kirjanJulkaisuvuosi.contains(hakusana)){
+                        vaustausLista.add(kirja);
+                    }
+                });
+                break;
+        }
+
+        return vaustausLista;
     }
 }
\ No newline at end of file
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 4c5876eae01f8af548ad1ada997d0991bc47157b..6ef0f16ac636934b882cbb40e3c652b8c7278f22 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
@@ -1,10 +1,7 @@
 package fi.utu.tech.ooj.exercise0;
 
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
 import java.io.PrintStream;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Scanner;
 
@@ -20,19 +17,17 @@ public class Main {
     public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki) {
         int kysymyslistanPituus = kysyttavat.length;
         int indx = 0;
-        boolean lopetetaanko = false;
-        String kysymys = "";
-
-        Scanner sc = new Scanner(System.in);
+        boolean lopetetaanko;
+        String kysymys;
         String vastaus;
         ArrayList<String> vastausLista = new ArrayList<>();
+        Scanner sc = new Scanner(System.in);
 
         do{
             kysymys = kysyttavat[indx];
             vastaus = kysyKysymysJaPalautaVastaus(kysymys, lopetusmerkki, sc);
 
             if (vastaus.equals(lopetusmerkki)){
-               // sc.close();
                 break;
             }
             else{
@@ -52,16 +47,6 @@ public class Main {
         return vastaus;
     }
 
-    public static int tarkistaSeuraavanKysymyksenIndx(int indx, int kysymyslistanPituus){
-
-        if(indx == kysymyslistanPituus-1){
-            indx = 0;
-        }
-        else{
-            indx += 1;
-        }
-        return indx;
-    }
     public static boolean tarkistaLopetetaanko(int indx, int listanPituus){
         boolean lopetetaanko = false;
 
@@ -79,7 +64,6 @@ public class Main {
 
     public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
         KirjaKokoelma uusiKokoelma = new KirjaKokoelma();
-
         String kokoelmanOmistaja = pyydaOmistajanNimi(lopetusmerkki);
         uusiKokoelma.uusiKirjaKokoelma(kokoelmanOmistaja);
 
@@ -89,7 +73,7 @@ public class Main {
 
         do{
             ArrayList<String> kirjanTiedot = kysyTietoja(kysymykset, lopetusmerkki);
-            boolean onkoKirjallaKaikkiTiedot = tarkistaOnkoKaikkiTiedot(kirjanTiedot,kysymyslistanPituus);
+            boolean onkoKirjallaKaikkiTiedot = tarkistaOnkoKaikkiKirjanTiedot(kirjanTiedot,kysymyslistanPituus);
 
             if(onkoKirjallaKaikkiTiedot){
                 Kirja luotuKirja = new Kirja();
@@ -120,7 +104,7 @@ public class Main {
         return omistaja;
     }
 
-    public static boolean tarkistaOnkoKaikkiTiedot(ArrayList<String> luotuKirja, int kysymyslistanPituus){
+    public static boolean tarkistaOnkoKaikkiKirjanTiedot(ArrayList<String> luotuKirja, int kysymyslistanPituus){
         boolean onKaikkiTiedot = false;
 
         if(luotuKirja.size() == kysymyslistanPituus){
@@ -145,14 +129,32 @@ public class Main {
         KirjaKokoelma kokoelmaYksi = luoKokoelma("seis");
 
         //Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia
+        System.out.println("\n----------------------------------");
+        System.out.println("------ Kokoelman tulostus --------");
+        System.out.println("----------------------------------");
 
         PrintStream out = new PrintStream(System.out);
         kokoelmaYksi.tulostaKokoelma(out);
         out.println();
-        out.close();
 
         //Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia
         //Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa.
 
+        out.println("\n-----------------------------");
+        out.println("------ Kirjojen haku --------");
+        out.println("-----------------------------");
+
+        List<Kirja> haetutKirjatNimi = kokoelmaYksi.etsiKirjat("ko", KirjanTiedot.NIMI);
+        haetutKirjatNimi.forEach(kirja -> out.println(kirja.toString()));
+
+        out.println("-----------------------------");
+        List<Kirja> haetutKirjatKirjailija = kokoelmaYksi.etsiKirjat("p", KirjanTiedot.KIRJAILIJA);
+        haetutKirjatKirjailija.forEach(kirja -> out.println(kirja.toString()));
+
+        out.println("-----------------------------");
+        List<Kirja> haetutKirjatVuosi = kokoelmaYksi.etsiKirjat("2002", KirjanTiedot.JULKAISUVUOSI);
+        haetutKirjatVuosi.forEach(kirja -> out.println(kirja.toString()));
+
+
     }
 }