diff --git a/ErzeugerVerbraucher/.idea/misc.xml b/ErzeugerVerbraucher/.idea/misc.xml
index e2ca0b8d9550af3b7d7fdff7358bb4da44e578ca..f52b70fae30c655c0df94618f1b63d3236de6fe0 100644
--- a/ErzeugerVerbraucher/.idea/misc.xml
+++ b/ErzeugerVerbraucher/.idea/misc.xml
@@ -3,4 +3,9 @@
   <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="openjdk-18" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
+  <component name="SwUserDefinedSpecifications">
+    <option name="specTypeByUrl">
+      <map />
+    </option>
+  </component>
 </project>
\ No newline at end of file
diff --git a/ErzeugerVerbraucher/src/Buffer.java b/ErzeugerVerbraucher/src/Buffer.java
index f65face45c55ed398b67db5ca466d2a48d34cf49..e91ea1b08656681d1f1fe36aea5520a6118984b6 100644
--- a/ErzeugerVerbraucher/src/Buffer.java
+++ b/ErzeugerVerbraucher/src/Buffer.java
@@ -1,38 +1,53 @@
-import java.nio.BufferOverflowException;
-import java.nio.BufferUnderflowException;
 import java.util.ArrayList;
-import java.util.List;
 import java.util.concurrent.Semaphore;
-import java.lang.Thread;
-public class Buffer<T>{
-    public int size;
-    public Semaphore mutex;
-    List<T> items = new ArrayList<T>();
+import java.lang.*;
 
-    public Buffer(int size) {
-        this.size= size;
-
-//BufferOVerflowException, wenn Buffer voll ist und dennoch Element geschrieben werden will
-    public void push(Buffer<T> e){
-        if()
-        mutex.acquire();
-        items.add(T.e);
-        mutex.release();
+public class Buffer<T> {
+    int size;
+    public Semaphore sem;
+    public ArrayList<T> items = new ArrayList<T>(size);
 
+    public Buffer(int size){
+        assert size >= 0;
+        this.size = size;
 
     }
-//BufferUnderflowException wenn Buffer leer ist und dennoch Element gelesen werden will
-    public void pop(Buffer<T> e){
+
+    public void push(T e) throws InterruptedException {
+        assert(e!=null);
+        assert(!full());
+        if(this.full()) {
+            System.out.println("Buffer is full");
+        }
+        this.sem.acquire();
+        items.add(e);
+        this.sem.release();
 
     }
 
-    public boolean full(){
-        assert items.size()>=0 : "Buffer cannot be less than 0 in size";
+//    public ArrayList<T> pop() throws InterruptedException{
+//        sem.acquire();
+//        item = items.remove(0);
+//        sem.release();
+//        return item;
+//
+//    }
 
-        }
+    public boolean full() throws InterruptedException {
+        sem.acquire();
+        boolean is_full = items.size()==size;
+        sem.release();
 
-    public boolean empty(){
+        return is_full;
+
+    }
+
+    public boolean empty() throws InterruptedException {
+        sem.acquire();
+        boolean is_empty = items.size()==0;
+        sem.release();
+
+        return is_empty;
 
-        }
     }
 }
diff --git a/ErzeugerVerbraucher/src/Consumer.java b/ErzeugerVerbraucher/src/Consumer.java
index d57c4739363c3f20a64451355d251097eee8fd78..2b16e6a3695443a1d5e39edc11f4c630705f0fb9 100644
--- a/ErzeugerVerbraucher/src/Consumer.java
+++ b/ErzeugerVerbraucher/src/Consumer.java
@@ -1,2 +1,34 @@
-public class Consumer {
+import com.sun.jdi.event.ThreadDeathEvent;
+import com.sun.jdi.event.ThreadStartEvent;
+
+import java.util.Random;
+import java.lang.*;
+
+public class Consumer{
+    int interval;
+    ThreadDeathEvent consumerThread;
+    ThreadStartEvent producerThread;
+    Buffer buffer;
+    public Consumer(Buffer buffer, int interval, ThreadDeathEvent consumerThread, ThreadStartEvent producerThread) {
+        assert buffer != null;
+        assert interval > 0;
+        this.buffer = buffer;
+        this.interval = interval;
+        this.consumerThread = consumerThread;
+        this.producerThread = producerThread;
+        this.run();
+
+        assert this.interval == interval;
+    }
+    public void run() throws InterruptedException{
+        assert this.interval > 0;
+
+        while(this.interval > 0) {
+            Thread.sleep(new Random().nextInt(interval));
+
+            boolean was_full = this.buffer.full();
+            assert was_full instanceof
+            if(!this.consumerThread.)
+        }
+    }
 }
diff --git a/ErzeugerVerbraucher/src/Main.java b/ErzeugerVerbraucher/src/Main.java
index 9b19be51048efdf548fdda82ac6f0310b157f8bd..df9fa5fe8668f1980bd6e02e19aeea7bf25d6c89 100644
--- a/ErzeugerVerbraucher/src/Main.java
+++ b/ErzeugerVerbraucher/src/Main.java
@@ -1,7 +1,12 @@
 public class Main {
     public static void main(String[] args) {
+        Buffer b1 = new Buffer(5);
+        try {
+            b1.push(5);
+        } catch (InterruptedException e) {
+            System.out.println(e);
+        }
 
-        Buffer b1 = new Buffer(5);  //Capacity of the Buffer
 
     }
-}
\ No newline at end of file
+}