diff --git a/opp_demo1b.java b/opp_demo1b.java
new file mode 100644
index 0000000000000000000000000000000000000000..4e2dfb9063b489757977ef26e5e8a89e64b624d7
--- /dev/null
+++ b/opp_demo1b.java
@@ -0,0 +1,136 @@
+import java.util.ArrayList;
+
+public class Asiakas {
+    private String nimi;
+    private int asiakasnmro;
+
+    public Asiakas(String nimi, Int asiakasnmro) {
+        this.nimi = nimi;
+        this.asiakasnmro = asiakasnmro;
+    }
+
+    public String getNimi() {
+        return nimi;
+    }
+
+    public int getAsiakasnmro() {
+        return asiakasnmro;
+    }
+}
+
+public class EsiintyjaLista {
+    private ArrayList<Esiintyja > esiintyjaLista;
+
+    public EsiintyjaLista(ArrayList<Esiintyja> esiintyjaLista) {
+        this.esiintyjaLista = esiintyjaLista;
+    }
+
+    public ArrayList<Esiintyja> getEsiintyjaLista() {
+        return esiintyjaLista;
+    }
+
+    public void lisaaEsiintyjaListaan(Esiintyja esiintyja){
+        esiintyjaLista.add(esiintyja);
+    }
+    public void poistaEsiintyja(Esiintyja esiintyja){
+        esiintyjaLista.remove(esiintyja);
+    }
+}
+
+public class Esiintyja{
+    private String nimi;
+    private String erityisala;
+    private Double palkkio;
+
+    public Esiintyja(String nimi, String erityisala, Double palkkio) {
+        this.nimi = nimi;
+        this.erityisala = erityisala;
+        this.palkkio = palkkio;
+    }
+
+    public String getNimi() {
+        return nimi;
+    }
+
+    public String getErityisala() {
+        return erityisala;
+    }
+
+    public Double getPalkkio() {
+        return palkkio;
+    }
+
+    public void setPalkkio(Double palkkio) {
+        this.palkkio = palkkio;
+    }
+}
+public class Tilaisuus {
+    private int tunniste;
+    private String tyyppi;
+    private Esiintyja esiintyja;
+    private Asiakas asiakas;
+    private VarausJarjestelma varausTiedot;
+
+    public Tilaisuus(int tunniste, String tyyppi, Esiintyja esiintyja, Asiakas asiakas, VarausJarjestelma varausTiedot) {
+        this.tunniste = tunniste;
+        this.tyyppi = tyyppi;
+        this.esiintyja = esiintyja;
+        this.asiakas = asiakas;
+        this.varausTiedot = varausTiedot;
+    }
+
+    public int getTunniste() {
+        return tunniste;
+    }
+
+    public String getTyyppi() {
+        return tyyppi;
+    }
+
+    public Esiintyja getEsiintyja() {
+        return esiintyja;
+    }
+
+    public Asiakas getAsiakas() {
+        return asiakas;
+    }
+
+    public VarausJarjestelma getVarausTiedot() {
+        return varausTiedot;
+    }
+}
+// Tilaisuuden tunniste vastaa aina yhtä tilaisuutta per esiintyjä
+public class VarausJarjestelma {
+    private Asiakas asiakas;
+    private Esiintyja esiintyja;
+    private Tilaisuus tilaisuus;
+    private Boolean maksuSuoritus;
+
+    public VarausJarjestelma(Asiakas asiakas, Esiintyja esiintyja, Tilaisuus tilaisuus, Boolean maksuSuoritus) {
+        this.asiakas = asiakas;
+        this.esiintyja = esiintyja;
+        this.tilaisuus = tilaisuus;
+        this.maksuSuoritus = maksuSuoritus;
+    }
+
+    public Asiakas getAsiakas() {
+        return asiakas;
+    }
+
+    public Esiintyja getEsiintyja() {
+        return esiintyja;
+    }
+
+    public Tilaisuus getTilaisuus() {
+        return tilaisuus;
+    }
+
+    public Boolean isMaksuSuoritus() {
+        return maksuSuoritus;
+    }
+
+    public void setMaksuSuoritus(Boolean maksuSuoritus) {
+        this.maksuSuoritus = maksuSuoritus;
+    }
+}
+