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..f1f7497cac854aad14f01b55797f1248a27c1345
--- /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.kirjailijanNimi = kirjailijanNimi;
+        this.kirjanNimi = kirjanNimi;
+        this.julkaisuVuosi = julkaisuVuosi;
+    }
+
+    public int getJulkaisuVuosi() {
+        return julkaisuVuosi;
+    }
+
+    public String getKirjailijanNimi() {
+        return kirjailijanNimi;
+    }
+
+    public String getKirjanNimi() {
+        return kirjanNimi;
+    }
+
+    public void setJulkaisuVuosi(int julkaisuVuosi) {
+        this.julkaisuVuosi = julkaisuVuosi;
+    }
+
+    public void setKirjailijanNimi(String kirjailijanNimi) {
+        this.kirjailijanNimi = kirjailijanNimi;
+    }
+
+    public void setKirjanNimi(String kirjanNimi) {
+        this.kirjanNimi = kirjanNimi;
+    }
+    @Override
+    public String toString(){
+        return "Kirja: " + kirjanNimi + "\nKirjailija: " + kirjailijanNimi + "\nJulkaisuvuosi: " + 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..ac4ca9532cb5164938f0ea8b9b5855afcc537004
--- /dev/null
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
@@ -0,0 +1,78 @@
+package fi.utu.tech.ooj.exercise0;
+import java.util.ArrayList;
+import java.io.PrintStream;
+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<>();
+
+    }
+
+    public String getKokoelmanOmistaja() {
+        return kokoelmanOmistaja;
+    }
+
+    public ArrayList<Kirja> getKirjaListaus() {
+        return kirjaListaus;
+    }
+
+    public void setKirjaListaus(ArrayList<Kirja> kirjaListaus) {
+        this.kirjaListaus = kirjaListaus;
+    }
+
+    public void setKokoelmanOmistaja(String kokoelmanOmistaja) {
+        this.kokoelmanOmistaja = kokoelmanOmistaja;
+    }
+
+    public void lisaaKirja(Kirja kirja){
+        this.kirjaListaus.add(kirja);
+    }
+
+    public void tulostaKokoelma(PrintStream out){
+        if (kirjaListaus.isEmpty()){
+            out.print("Kokoelma on tyhjä");
+            out.close();
+        } else {
+            for (Kirja kirja : kirjaListaus){
+                out.print(kirja);
+
+            }
+        }
+    }
+    public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException {
+        List<Kirja> lista = new ArrayList<>();
+
+        try {
+            switch (kentta){
+                case NIMI:
+                    for (Kirja kirja : kirjaListaus){
+                        if (kirja.getKirjanNimi().contains(hakusana)){
+                            lista.add(kirja);
+                        }
+                    }
+                case KIRJAILIJA:
+                    for (Kirja kirja: kirjaListaus){
+                        if (kirja.getKirjailijanNimi().contains(hakusana)){
+                            lista.add(kirja);
+                        }
+                    }
+                case JULKAISUVUOSI:
+                    for (Kirja kirja: kirjaListaus){
+                        if (kirja.getJulkaisuVuosi() == Integer.valueOf(hakusana)){
+                            lista.add(kirja);
+                        }
+                    }
+            }
+
+        } catch (IllegalArgumentException e) {
+
+        }
+        return lista;
+    }
+}
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..535bb2ff52868a16de92e4c8cd53b97f3954fc06 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
@@ -1,5 +1,6 @@
 package fi.utu.tech.ooj.exercise0;
 
+import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -12,19 +13,52 @@ 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> lista = new ArrayList<>();
+        for (String alkio : kysyttavat){
+            System.out.println(alkio);
+            String vastaus = lukija.nextLine();
+            if (vastaus.equals(lopetusmerkki)){
+                break;
+            }
+            lista.add(vastaus);
+        }
+
+        return lista;
+    }
 
     /*
      * 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){
+        Scanner lukija = new Scanner(System.in);
+        System.out.print("Kokoelman omistaja: ");
+        String omistaja = lukija.nextLine();
+
+        KirjaKokoelma kokoelma = new KirjaKokoelma(omistaja);
+
+        String[] kysymykset = {"Kirjan nimi", "Kirjailija", "Julkaisuvuosi"};
+
+        while (true){
+
+            ArrayList<String> apulista = new ArrayList<>();
+            for (String tieto : kysyTietoja(kysymykset, lopetusmerkki)){
+                apulista.add(tieto);
+            }
+            if (apulista.size() != 3) {
+                break;
+            } else {
+                int apu = Integer.valueOf(apulista.get(2));
+                Kirja kirja = new Kirja(apulista.get(0), apulista.get(1), apu);
+                kokoelma.lisaaKirja(kirja);
+            }
+        }
+        return kokoelma;
+    }
 
-    }*/
 
     /**
      * Main class.
@@ -32,19 +66,24 @@ 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 ***");
+
+        String[] kysymykset = {"Kirjan nimi", "Kirjailija", "Julkaisuvuosi"};
 
         //Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia
 
+        KirjaKokoelma kokoelma = luoKokoelma("/loppu");
 
         //Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia
 
+        PrintStream out = new PrintStream(System.out);
+
+        kokoelma.tulostaKokoelma(out);
 
         //Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia
+
         //Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa.
 
+        System.out.println(kokoelma.etsiKirjat("joku", KirjanTiedot.NIMI));
+
     }
 }