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..598fba09c4651f5931c4810368b650f86af2c692
--- /dev/null
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java
@@ -0,0 +1,41 @@
+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 void setKirjanNimi(String kirjanNimi) {
+        this.kirjanNimi = kirjanNimi;
+    }
+
+    public String getKirjailijanNimi() {
+        return kirjailijanNimi;
+    }
+
+    public void setKirjailijanNimi(String kirjailijanNimi) {
+        this.kirjailijanNimi = kirjailijanNimi;
+    }
+
+    public int getJulkaisuVuosi() {
+        return julkaisuVuosi;
+    }
+
+    public void setJulkaisuVuosi(int julkaisuVuosi) {
+        this.julkaisuVuosi = julkaisuVuosi;
+    }
+    @Override
+    public String toString() {
+        return "Kirja: " + getKirjanNimi() + "\nKirjailija: " + getKirjailijanNimi() + "\nJulkaisuvuosi: " +  getJulkaisuVuosi() + "\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..ee12a08a2becc75c35ed3767ecf9986b98fecff2
--- /dev/null
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
@@ -0,0 +1,68 @@
+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, ArrayList<Kirja> kirjaListaus) {
+        this.kokoelmanOmistaja = kokoelmanOmistaja;
+        this.kirjaListaus = kirjaListaus;
+
+    }
+
+    public void tulostaKokoelma(PrintStream out) {
+        if (getKirjaListaus().size() == 0) {
+            out.println("Kokoelma on tyhjä.");
+        } else {
+            StringBuilder kirjat = new StringBuilder();
+            for (Kirja kirja : getKirjaListaus()) {
+                kirjat.append(kirja.toString());
+            }
+            out.println(kirjat);
+        }
+    }
+    public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException {
+        if (kentta == null || hakusana == null || hakusana.length() == 0) {
+            throw new IllegalArgumentException("Tarkista, että olet kirjoittanut hakusanan ja valinnut kentän kirjanTiedot-luokasta!");
+        }
+        List<Kirja> kirjat = new ArrayList<>();
+        for (Kirja kirja : getKirjaListaus()) {
+            switch (kentta) {
+                case NIMI:
+                    if (kirja.getKirjanNimi().contains(hakusana)) {
+                        kirjat.add(kirja);
+                    }
+                case KIRJAILIJA:
+                    if (kirja.getKirjailijanNimi().contains(hakusana)) {
+                        kirjat.add(kirja);
+                    }
+                case JULKAISUVUOSI:
+                    if (String.valueOf(kirja.getJulkaisuVuosi()).contains(hakusana)) {
+                        kirjat.add(kirja);
+                    }
+            }
+        }
+        return kirjat;
+    }
+
+    public void lisaaKirja(Kirja kirja) {
+        kirjaListaus.add(kirja);
+    }
+
+    public String getKokoelmanOmistaja() {
+        return kokoelmanOmistaja;
+    }
+
+    public void setKokoelmanOmistaja(String kokoelmanOmistaja) {
+        this.kokoelmanOmistaja = kokoelmanOmistaja;
+    }
+
+    public ArrayList<Kirja> getKirjaListaus() {
+        return kirjaListaus;
+    }
+}
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..a22c6908789853f84049a81f8bf9ffabd6ca1dbe 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
@@ -1,9 +1,6 @@
 package fi.utu.tech.ooj.exercise0;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Scanner;
+import java.util.*;
 
 public class Main {
 
@@ -12,9 +9,20 @@ 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) {
+        ArrayList<String> vastaukset = new ArrayList<>();
+        Scanner lukija = new Scanner(System.in);
+        for (String kysyttava : kysyttavat) {
+            System.out.print(kysyttava + ": ");
+            String vastaus = lukija.nextLine();
+            if (vastaus.equals(lopetusmerkki)) {
+                return null;
+            } else {
+                vastaukset.add(vastaus);
+            }
+        }
+        return vastaukset;
+    }
 
 
     /*
@@ -22,9 +30,29 @@ public class Main {
      * kommenttimerkit alla olevan rutiinin rungon ympäriltä.
      */
 
-    /*public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
 
-    }*/
+    public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
+        try {
+            KirjaKokoelma kokoelma = new KirjaKokoelma(kysyTietoja(new String[]{"Kokoelman omistaja"}, lopetusmerkki).toString(), new ArrayList<>());
+            while (true) {
+                ArrayList<String> vastaukset = kysyTietoja(new String[]{"kirjan nimi", "kirjailijan nimi", "julkaisuvuosi"}, lopetusmerkki);
+                do {
+                    if (vastaukset == null) {
+                        return kokoelma;
+                    }
+                    try {
+                        kokoelma.lisaaKirja(new Kirja(vastaukset.get(0), vastaukset.get(1), Integer.valueOf(vastaukset.get(2))));
+                        break;
+                    } catch (NumberFormatException e) {
+                        System.out.println("Varmista, että kirjoitit vuoden kokonaislukuina!");
+                        vastaukset.set(2, kysyTietoja(new String[]{"Julkaisuvuosi"}, lopetusmerkki).get(0));
+                    }
+                } while (true);
+            }
+        } catch (NullPointerException e) {
+            return new KirjaKokoelma(null, new ArrayList<>());
+        }
+    }
 
     /**
      * Main class.
@@ -35,16 +63,20 @@ public class Main {
         /*
          * Testin jälkeen alla olevan rivin voi joko kommentoida tai poistaa.
          */
-        System.out.println("*** Harjoitustyöpohja käynnistyy ***");
+        //System.out.println("*** Harjoitustyöpohja käynnistyy ***");
 
         //Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia
-
+        KirjaKokoelma kokoelma = luoKokoelma("lopeta");
 
         //Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia
-
-
+        System.out.println("Kirjakokoelmasi:");
+        kokoelma.tulostaKokoelma(System.out);
         //Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia
+        List<Kirja> haku = kokoelma.etsiKirjat("1915", KirjanTiedot.JULKAISUVUOSI);
         //Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa.
-
+        System.out.println("Hakutulos:");
+        for (Kirja kirja : haku) {
+            System.out.println(kirja);
+        }
     }
 }