diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 26d33521af10bcc7fd8cea344038eaaeb78d0ef5..0000000000000000000000000000000000000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 432b6463321993752b6a5bdf57f389f0f99993b6..0000000000000000000000000000000000000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="19" project-jdk-type="JavaSDK">
-    <output url="file://$PROJECT_DIR$/out" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index c4f025bc98ca8947ae5919d67478b0b4528f7ac0..0000000000000000000000000000000000000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/oop-demo3-esimerkit.iml" filepath="$PROJECT_DIR$/oop-demo3-esimerkit.iml" />
-    </modules>
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1ddfbbc029bcab630581847471d7f238ec53..0000000000000000000000000000000000000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="" vcs="Git" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/Verkkokauppa.java b/Verkkokauppa.java
index f3a6e825491b48c7b7927f491627cc41b8e26bcb..cfe795eb80ea95bcd7ef1f8a3d3da7a7595288a6 100644
--- a/Verkkokauppa.java
+++ b/Verkkokauppa.java
@@ -2,28 +2,28 @@ import java.util.ArrayList;
 import java.util.HashMap;
 
 public class Verkkokauppa {
-    private ArrayList<Asiakas> asiakkaat;
-    private ArrayList<Tuote> tuotteet;
-    private ArrayList<Myyja> myyjat;
+    private HashMap<String, Asiakas> asiakkaat;
+    private HashMap<String, Tuote> tuotteet;
+    private HashMap<String, Myyja> myyjat;
     private ArrayList<Ostotapahtuma> tapahtumat;
 
     public Verkkokauppa() {
-        asiakkaat = new ArrayList<>();
-        tuotteet = new ArrayList<>();
-        myyjat = new ArrayList<>();
+        asiakkaat = new HashMap<>();
+        tuotteet = new HashMap<>();
+        myyjat = new HashMap<>();
         tapahtumat = new ArrayList<>();
     }
 
     public void lisaaAsiakas(Asiakas asiakas) {
-        asiakkaat.add(asiakas);
+        asiakkaat.put(asiakas.getAsiakasNumero(), asiakas);
     }
 
     public void lisaaTuote(Tuote tuote) {
-        tuotteet.add(tuote);
+        tuotteet.put(tuote.getNimi(), tuote);
     }
 
     public void lisaaMyyja(Myyja myyja) {
-        myyjat.add(myyja);
+        myyjat.put(myyja.getTunniste(), myyja);
     }
 
     public void lisaaTapahtuma(Ostotapahtuma tapahtuma) {
@@ -37,8 +37,8 @@ public class Verkkokauppa {
      * @return true, jos asiakas löytyi ja poistettiin, muuten false
      */
     public boolean poistaAsiakas(Asiakas asiakas) {
-        if (asiakkaat.contains(asiakas)) {
-            asiakkaat.remove(asiakas);
+        if (asiakkaat.containsValue(asiakas)) {
+            asiakkaat.remove(asiakas.getAsiakasNumero());
             return true;
         }
         return false;
@@ -51,8 +51,8 @@ public class Verkkokauppa {
      * @return true, jos tuote löytyi ja poistettiin, muuten false
      */
     public boolean poistaTuote(Tuote tuote) {
-        if (tuotteet.contains(tuote)) {
-            tuotteet.remove(tuote);
+        if (tuotteet.containsValue(tuote)) {
+            tuotteet.remove(tuote.getNimi());
             return true;
         }
         return false;
@@ -65,8 +65,8 @@ public class Verkkokauppa {
      * @return true, jos myyjä löytyi ja poistettiin, muuten false
      */
     public boolean poistaMyyja(Myyja myyja) {
-        if (myyjat.contains(myyja)) {
-            myyjat.remove(myyja);
+        if (myyjat.containsValue(myyja)) {
+            myyjat.remove(myyja.getTunniste());
             return true;
         }
         return false;
@@ -94,7 +94,7 @@ public class Verkkokauppa {
      * @return pyydetyn asiakkaan tai null, jos asiakasta ei löydy
      */
     public Asiakas annaAsiakas(String asiakasnumero) {
-        for (Asiakas asiakas : asiakkaat) {
+        for (Asiakas asiakas : asiakkaat.values()) {
             if (asiakas.getAsiakasNumero().equals(asiakasnumero)) {
                 return asiakas;
             }
@@ -110,7 +110,7 @@ public class Verkkokauppa {
      * @return pyydetyn tuotteen tai null, jos tuotetta ei löydy
      */
     public Tuote annaTuote(String nimi) {
-        for (Tuote tuote : tuotteet) {
+        for (Tuote tuote : tuotteet.values()) {
             if (tuote.getNimi().equals(nimi)) {
                 return tuote;
             }
@@ -126,7 +126,7 @@ public class Verkkokauppa {
      * @return pyydetyn myyjän tai null, jos myyjää ei löydy
      */
     public Myyja annaMyyja(String tunniste) {
-        for (Myyja myyja : myyjat) {
+        for (Myyja myyja : myyjat.values()) {
             if (myyja.getTunniste().equals(tunniste)) {
                 return myyja;
             }
@@ -149,7 +149,6 @@ public class Verkkokauppa {
         return null;
     }
 
-
     /**
      * Palauttaa kaikki asiakkaat yhtenä merkkijonona.
      *
@@ -160,7 +159,7 @@ public class Verkkokauppa {
         // \t on tabulaattori, joka tasaa tulosteen
         // sarakkeisiin; \n tekee rivinvaihdon
         StringBuilder s = new StringBuilder("Asiakasnumero\tNimi\t\t\tOstoja\tKanta-asiakas\n");
-        for (Asiakas asiakas : asiakkaat) {
+        for (Asiakas asiakas : asiakkaat.values()) {
             s.append(asiakas.getAsiakasNumero() + "\t\t\t");
             s.append(asiakas.getNimi() + "\t");
             s.append(asiakas.getOstojaTehty() + "\t\t");
@@ -183,7 +182,7 @@ public class Verkkokauppa {
         // \t on tabulaattori, joka tasaa tulosteen
         // sarakkeisiin; \n tekee rivinvaihdon
         StringBuilder s = new StringBuilder("Tunniste\tNimi\t\t\tProvisiot\n");
-        for (Myyja myyja : myyjat) {
+        for (Myyja myyja : myyjat.values()) {
             s.append(myyja.getTunniste() + "\t\t");
             s.append(myyja.getNimi() + "\t\t");
             s.append(myyja.getProvisiot() + "\n");
@@ -201,7 +200,7 @@ public class Verkkokauppa {
         // \t on tabulaattori, joka tasaa tulosteen
         // sarakkeisiin; \n tekee rivinvaihdon
         StringBuilder s = new StringBuilder("Nimi\tSaldo\t\t\tHinta\tVirtuaalinen\n");
-        for (Tuote tuote : tuotteet) {
+        for (Tuote tuote : tuotteet.values()) {
             s.append(tuote.getNimi() + "\t");
             s.append(tuote.getSaldo() + "\t\t");
             s.append(tuote.getHinta() + "\t");