diff --git a/pom.xml b/pom.xml
index bb38ac252ffc2c9b75e824021433b93e1cc6e815..a02a065930b1d30ee95308855144cff2e9f19f89 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,6 +66,39 @@
 			<groupId>com.vaadin</groupId>
 			<artifactId>vaadin-themes</artifactId>
 		</dependency>
+                <dependency>
+                        <groupId>org.projectlombok</groupId>
+                        <artifactId>lombok</artifactId> 
+                        <version>1.16.16</version> 
+                        <scope>provided</scope> 
+                </dependency>                
+	 <dependency>
+	  <groupId>org.apache.commons</groupId>
+	  <artifactId>commons-lang3</artifactId>
+	  <version>3.4</version>
+	  <type>jar</type>
+	 </dependency>
+	 <dependency>
+	  <groupId>junit</groupId>
+	  <artifactId>junit</artifactId>
+	  <version>4.11</version>
+	  <scope>test</scope>
+	  <type>jar</type>
+	 </dependency>
+          <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-core</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-library</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency> 
+         
 	</dependencies>
 
 	<build>
@@ -124,6 +157,25 @@
 					<scanIntervalSeconds>2</scanIntervalSeconds>
 				</configuration>
 			</plugin>
+ <plugin>
+            <groupId>org.jacoco</groupId>
+            <artifactId>jacoco-maven-plugin</artifactId>
+            <version>0.7.1.201405082137</version>
+            <executions>
+                <execution>
+                    <goals>
+                        <goal>prepare-agent</goal>
+                    </goals>
+                </execution>
+                <execution>
+                    <id>report</id>
+                    <phase>prepare-package</phase>
+                    <goals>
+                        <goal>report</goal>
+                    </goals>
+                </execution>
+            </executions>
+        </plugin>
 		</plugins>
 	</build>
 
diff --git a/src/main/java/org/s4s/MyUI.java b/src/main/java/org/s4s/MyUI.java
index fe05effba24d1fdec218d7e2d41f3fdaba07b13a..091ea082d55b3e3de850c3d6be9fbf12c9f34ce4 100644
--- a/src/main/java/org/s4s/MyUI.java
+++ b/src/main/java/org/s4s/MyUI.java
@@ -22,8 +22,18 @@ import com.vaadin.ui.TextField;
 import com.vaadin.ui.UI;
 import com.vaadin.ui.VerticalLayout;
 import java.util.List;
-import org.s4s.gui.views.MainView;
+import org.s4s.gui.views.ArtikeldetailsView;
+import org.s4s.gui.views.BenutzerkontoView;
+import org.s4s.gui.views.CheckoutView;
+import org.s4s.gui.views.FaqView;
+import org.s4s.gui.views.ImpressumView;
+import org.s4s.gui.views.KaufbestaetigungView;
+import org.s4s.gui.views.LoginView;
+import org.s4s.gui.views.PasswortView;
+import org.s4s.gui.views.ShopView;
+import org.s4s.gui.views.VerkaeuferbewertungView;
 import org.s4s.gui.views.WelcomeView;
+import org.s4s.gui.views.WarenkorbView;
 import org.s4s.modell.objects.dto.Product;
 import org.s4s.process.controll.ProductSearch;
 import org.s4s.services.util.Views;
@@ -42,13 +52,21 @@ public class MyUI extends UI {
     @Override
     protected void init(VaadinRequest vaadinRequest) {
         Navigator navi = new Navigator ( this , this );
-        navi.addView(Views.MAIN, MainView.class );
+        navi.addView(Views.SHOP, ShopView.class );
         navi.addView(Views.WELCOME, WelcomeView.class);
-        
+        navi.addView(Views.LOGIN, LoginView.class);
+        navi.addView(Views.WARENKORB, WarenkorbView.class);
+        navi.addView(Views.PASSWORT, PasswortView.class);
+        navi.addView(Views.BENUTZERKONTO, BenutzerkontoView.class);
+        navi.addView(Views.ARTIKELDETAILS, ArtikeldetailsView.class);
+        navi.addView(Views.CHECKOUT, CheckoutView.class);
+        navi.addView(Views.IMPRESSUM, ImpressumView.class);
+        navi.addView(Views.FAQ, FaqView.class);
+        navi.addView(Views.KAUFBESTAETIGUNG, KaufbestaetigungView.class);
+        navi.addView(Views.VERKAEUFERBEWERTUNG, VerkaeuferbewertungView.class);
         UI.getCurrent().getNavigator().navigateTo(Views.WELCOME);
     }
    
-    
 
     @WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
     @VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
diff --git a/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java b/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java
new file mode 100644
index 0000000000000000000000000000000000000000..d5d27c24459f5adf3e354502db727ce71337f1b1
--- /dev/null
+++ b/src/main/java/org/s4s/gui/views/ArtikeldetailsView.java
@@ -0,0 +1,23 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.gui.views;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ *
+ * @author Holger
+ */
+public class ArtikeldetailsView extends VerticalLayout implements View{
+
+    @Override
+    public void enter(ViewChangeListener.ViewChangeEvent event) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+}
diff --git a/src/main/java/org/s4s/gui/views/BenutzerkontoView.java b/src/main/java/org/s4s/gui/views/BenutzerkontoView.java
new file mode 100644
index 0000000000000000000000000000000000000000..2cd0b54a370b4aa85b19165790c839c0082bbbd8
--- /dev/null
+++ b/src/main/java/org/s4s/gui/views/BenutzerkontoView.java
@@ -0,0 +1,23 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.gui.views;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ *
+ * @author Holger
+ */
+public class BenutzerkontoView extends VerticalLayout implements View{
+
+    @Override
+    public void enter(ViewChangeListener.ViewChangeEvent event) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+}
diff --git a/src/main/java/org/s4s/gui/views/CheckoutView.java b/src/main/java/org/s4s/gui/views/CheckoutView.java
new file mode 100644
index 0000000000000000000000000000000000000000..51d921a6e394339aa44c40c731bd12ed8c294b00
--- /dev/null
+++ b/src/main/java/org/s4s/gui/views/CheckoutView.java
@@ -0,0 +1,23 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.gui.views;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ *
+ * @author Holger
+ */
+public class CheckoutView extends VerticalLayout implements View{
+
+    @Override
+    public void enter(ViewChangeListener.ViewChangeEvent event) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+}
diff --git a/src/main/java/org/s4s/gui/views/FaqView.java b/src/main/java/org/s4s/gui/views/FaqView.java
new file mode 100644
index 0000000000000000000000000000000000000000..5d7c4dfcf6a43d9f6a76440c5711b24ac5f09c12
--- /dev/null
+++ b/src/main/java/org/s4s/gui/views/FaqView.java
@@ -0,0 +1,23 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.gui.views;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ *
+ * @author Holger
+ */
+public class FaqView extends VerticalLayout implements View{
+
+    @Override
+    public void enter(ViewChangeListener.ViewChangeEvent event) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+}
diff --git a/src/main/java/org/s4s/gui/views/ImpressumView.java b/src/main/java/org/s4s/gui/views/ImpressumView.java
new file mode 100644
index 0000000000000000000000000000000000000000..3fb284142e4ed4fc326c0e51cc69a94426584989
--- /dev/null
+++ b/src/main/java/org/s4s/gui/views/ImpressumView.java
@@ -0,0 +1,39 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.gui.views;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ *
+ * @author Holger
+ */
+public class ImpressumView extends VerticalLayout implements View{
+
+    @Override
+    public void enter(ViewChangeListener.ViewChangeEvent event) {
+        this.setUp();
+    }
+    
+    private void setUp(){
+        setSizeFull();
+        setMargin(true);
+        Label label = new Label("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, "
+                + "sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,"
+                + " sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum."
+                + " Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
+                + " Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod"
+                + " tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua."
+                + " At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, "
+                + "no sea takimata sanctus est Lorem ipsum dolor sit amet.");
+        addComponent(label);
+        setComponentAlignment(label,Alignment.MIDDLE_CENTER);
+    }
+}
diff --git a/src/main/java/org/s4s/gui/views/KaufbestaetigungView.java b/src/main/java/org/s4s/gui/views/KaufbestaetigungView.java
new file mode 100644
index 0000000000000000000000000000000000000000..3056dffd5cbc3aac294ec904b97f1581c87b95fa
--- /dev/null
+++ b/src/main/java/org/s4s/gui/views/KaufbestaetigungView.java
@@ -0,0 +1,23 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.gui.views;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ *
+ * @author Holger
+ */
+public class KaufbestaetigungView extends VerticalLayout implements View{
+
+    @Override
+    public void enter(ViewChangeListener.ViewChangeEvent event) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+}
diff --git a/src/main/java/org/s4s/gui/views/LoginView.java b/src/main/java/org/s4s/gui/views/LoginView.java
new file mode 100644
index 0000000000000000000000000000000000000000..360dfc2095d6fbe4b29cc638a8c4ff11979997bd
--- /dev/null
+++ b/src/main/java/org/s4s/gui/views/LoginView.java
@@ -0,0 +1,56 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.gui.views;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.server.Resource;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.PasswordField;
+import com.vaadin.ui.VerticalLayout;
+import java.awt.TextField;
+
+/**
+ *
+ * @author Holger
+ */
+public class LoginView extends VerticalLayout implements View{
+
+    
+    @Override
+    public void enter(ViewChangeListener.ViewChangeEvent event) {
+        this.setUp();
+    }
+    
+    public void setUp(){
+        setSizeFull();
+        setMargin(true);
+        final HorizontalLayout horizontalLayout = new HorizontalLayout();
+        final TextField user = new TextField("Benutzername: ");
+        final PasswordField password = null; 
+        final Button loginButton = new Button("Einloggen");        
+        
+        
+        
+        horizontalLayout.setSpacing(true);
+        horizontalLayout.addComponent(loginButton);
+        horizontalLayout.setComponentAlignment(loginButton, Alignment.TOP_RIGHT);
+        horizontalLayout.addComponent(password);
+        horizontalLayout.setComponentAlignment(password, Alignment.TOP_RIGHT);
+        horizontalLayout.addComponent((Component) user);
+        horizontalLayout.setComponentAlignment((Component) user, Alignment.TOP_RIGHT);
+        
+        
+        addComponent(horizontalLayout);
+        setComponentAlignment(horizontalLayout,Alignment.TOP_RIGHT);
+        
+    }
+    
+    
+}
diff --git a/src/main/java/org/s4s/gui/views/PasswortView.java b/src/main/java/org/s4s/gui/views/PasswortView.java
new file mode 100644
index 0000000000000000000000000000000000000000..06779817aa6f59a492033cabb57b46c25aaa9f6b
--- /dev/null
+++ b/src/main/java/org/s4s/gui/views/PasswortView.java
@@ -0,0 +1,23 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.gui.views;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ *
+ * @author Holger
+ */
+public class PasswortView extends VerticalLayout implements View{
+
+    @Override
+    public void enter(ViewChangeListener.ViewChangeEvent event) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+}
diff --git a/src/main/java/org/s4s/gui/views/MainView.java b/src/main/java/org/s4s/gui/views/ShopView.java
similarity index 97%
rename from src/main/java/org/s4s/gui/views/MainView.java
rename to src/main/java/org/s4s/gui/views/ShopView.java
index 00e5e50c4ba06bbbb88eed4a1be764e7f5a10831..a6e1ed6323de79a98ec76a351eeea37724e8f965 100644
--- a/src/main/java/org/s4s/gui/views/MainView.java
+++ b/src/main/java/org/s4s/gui/views/ShopView.java
@@ -25,7 +25,7 @@ import org.s4s.process.controll.ProductSearch;
  *
  * @author Holger
  */
-public class MainView extends VerticalLayout implements View{
+public class ShopView extends VerticalLayout implements View{
 
     @Override
     public void enter(ViewChangeListener.ViewChangeEvent event) {
diff --git a/src/main/java/org/s4s/gui/views/VerkaeuferbewertungView.java b/src/main/java/org/s4s/gui/views/VerkaeuferbewertungView.java
new file mode 100644
index 0000000000000000000000000000000000000000..dba00eafb715ee82545a332a69ee23fde1728fdc
--- /dev/null
+++ b/src/main/java/org/s4s/gui/views/VerkaeuferbewertungView.java
@@ -0,0 +1,27 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.gui.views;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ *
+ * @author Holger
+ */
+public class VerkaeuferbewertungView extends VerticalLayout implements View{
+
+    @Override
+    public void enter(ViewChangeListener.ViewChangeEvent event) {
+        this.setUp();
+    }
+    
+    public void setUp(){
+        
+    }
+    
+}
diff --git a/src/main/java/org/s4s/gui/views/WarenkorbView.java b/src/main/java/org/s4s/gui/views/WarenkorbView.java
new file mode 100644
index 0000000000000000000000000000000000000000..048d56096c5d611ab1eca00b9927b002d80c57f1
--- /dev/null
+++ b/src/main/java/org/s4s/gui/views/WarenkorbView.java
@@ -0,0 +1,23 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.gui.views;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ *
+ * @author Holger
+ */
+public class WarenkorbView extends VerticalLayout implements View{
+
+    @Override
+    public void enter(ViewChangeListener.ViewChangeEvent event) {
+        
+    }
+    
+}
diff --git a/src/main/java/org/s4s/gui/views/WelcomeView.java b/src/main/java/org/s4s/gui/views/WelcomeView.java
index bfdc98cf4bd585bf91b40794069b78603508432a..5e01a1fe47bb97a015da76358e95de14b1419d2a 100644
--- a/src/main/java/org/s4s/gui/views/WelcomeView.java
+++ b/src/main/java/org/s4s/gui/views/WelcomeView.java
@@ -43,12 +43,25 @@ public class WelcomeView extends VerticalLayout implements View{
         buttonLayout.setComponentAlignment(loginButton, Alignment.TOP_RIGHT);
         
         
+        Button impressumButton = new Button("Impressum");
+        horizontalLayout.addComponent(impressumButton);
+        horizontalLayout.setComponentAlignment(impressumButton, Alignment.MIDDLE_LEFT);
+        
+        
         addComponent(buttonLayout);
         buttonLayout.setSizeFull();
         sucheButton.addClickListener((Button.ClickEvent event) ->{
-           UI.getCurrent().getNavigator().navigateTo(Views.MAIN);   
+           UI.getCurrent().getNavigator().navigateTo(Views.SHOP);   
         });
        
+        loginButton.addClickListener((Button.ClickEvent event) ->{
+            UI.getCurrent().getNavigator().navigateTo(Views.LOGIN);
+    });
+        
+        impressumButton.addClickListener((Button.ClickEvent event) -> {
+            UI.getCurrent().getNavigator().navigateTo(Views.IMPRESSUM);
+        });
+        
         Label label = new Label("Willkommen in unserem Shop in Shop System!");
         horizontalLayout.addComponent(label);
         horizontalLayout.setComponentAlignment(label, Alignment.MIDDLE_CENTER);
diff --git a/src/main/java/org/s4s/modell/objects/dto/Kunde.java b/src/main/java/org/s4s/modell/objects/dto/Kunde.java
new file mode 100644
index 0000000000000000000000000000000000000000..aca558f3c36317eb6d7a593ea5f6e91deaeefb58
--- /dev/null
+++ b/src/main/java/org/s4s/modell/objects/dto/Kunde.java
@@ -0,0 +1,30 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.modell.objects.dto;
+
+/**
+ *
+ * @author Holger
+ */
+public class Kunde {
+    private String vorname;
+    private String nachname;
+    private int userID;
+
+    
+    
+    public String getVorname(){
+        return vorname;
+    }
+    
+    public String getNachname(){
+        return nachname;
+    }
+    
+    public int getUserID(){
+        return userID;
+    }
+}
diff --git a/src/main/java/org/s4s/modell/objects/dto/Product.java b/src/main/java/org/s4s/modell/objects/dto/Product.java
index 686f73e3e25175f4827a8afb456a50aacc6032cf..ea55275a45ad857dffb4a2568c8de49a4cc8f99c 100644
--- a/src/main/java/org/s4s/modell/objects/dto/Product.java
+++ b/src/main/java/org/s4s/modell/objects/dto/Product.java
@@ -5,6 +5,10 @@
  */
 package org.s4s.modell.objects.dto;
 
+import java.util.Objects;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
 /**
  *
  * @author Holger Karwanni
@@ -29,6 +33,35 @@ public class Product {
         
     }
     
+    @Override
+    public boolean equals(Object other){
+        if(other == null){
+            return false;
+        }
+        if(!(other instanceof Product)){
+            return false;
+        } 
+        Product p = (Product) other;
+        return new EqualsBuilder()
+                .append(p.getName(), name)
+                .append(p.getId(), id)
+                .append(p.getTyp(), typ)
+                .append(p.getPrice(), price)
+                .append(p.getDescription(), description)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder()
+                .append(name)
+                .append(id)
+                .append(typ)
+                .append(price)
+                .append(description)
+                .hashCode();
+    }
+    
     public String getName(){
         return name;
     }
diff --git a/src/main/java/org/s4s/modell/objects/dto/Warenkorb.java b/src/main/java/org/s4s/modell/objects/dto/Warenkorb.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e80c8c2f0da707ea63cb3b8e19c0afd405be3ef
--- /dev/null
+++ b/src/main/java/org/s4s/modell/objects/dto/Warenkorb.java
@@ -0,0 +1,51 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.modell.objects.dto;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Holger
+ */
+public class Warenkorb {
+ 
+    private final List<Product> products;
+    
+    
+    public Warenkorb(){
+        products = new ArrayList<>();
+    }
+    
+    public void add(Product p){
+        if(p == null){
+            throw new NullPointerException("Produkt darf nicht null sein!");
+        }
+        products.add(p);
+    }
+    
+    public void remove(Product p){
+        if(p == null){
+            throw new NullPointerException("Produkt darf nicht null sein!");
+        }
+        if(!products.contains(p)){
+            throw new IllegalArgumentException("Das Produkt ist nicht im Warenkorb enthalten!");
+        }
+        products.remove(p);
+    }
+    
+    public double sum(){
+       return products.stream().mapToDouble(p-> p.getPrice()).sum();
+    }
+    
+    public boolean contains(Product p){
+        if(p == null){
+            throw new NullPointerException("Produkt darf nicht null sein!");
+        }
+        return products.contains(p);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/org/s4s/services/util/Views.java b/src/main/java/org/s4s/services/util/Views.java
index 9cf7f096b171f6c02b6f5abc5e1ee154261562de..263d4d67ff3aa0185ab8aee5a450a021f88b8df9 100644
--- a/src/main/java/org/s4s/services/util/Views.java
+++ b/src/main/java/org/s4s/services/util/Views.java
@@ -9,7 +9,21 @@ package org.s4s.services.util;
  *
  * @author Holger
  */
-public class Views {
+public final class Views {
     public final static String WELCOME = "welcome";
-    public final static String MAIN = "main";
+    public final static String SHOP = "shop";
+    public final static String LOGIN = "login";
+    public final static String WARENKORB = "warenkorb";
+    public final static String BENUTZERKONTO = "benutzerkonto";
+    public final static String PASSWORT = "passwort";
+    public final static String ARTIKELDETAILS = "artikeldetails";
+    public final static String CHECKOUT = "checkout";
+    public final static String IMPRESSUM = "impressum";
+    public final static String FAQ = "faq";
+    public final static String KAUFBESTAETIGUNG = "kaufbestaetigung";
+    public final static String VERKAEUFERBEWERTUNG = "verkaeuferbewertung";
+    
+    private Views(){
+        
+    }
 }
diff --git a/src/test/java/org/s4s/matchers/UtilityMatchers.java b/src/test/java/org/s4s/matchers/UtilityMatchers.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a05d90d2c7cde0f1d6f75183e0173d7a2686540
--- /dev/null
+++ b/src/test/java/org/s4s/matchers/UtilityMatchers.java
@@ -0,0 +1,77 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.matchers;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import lombok.SneakyThrows;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
+
+public class UtilityMatchers {
+
+    public static Matcher isWellDefinedUtilityClass() {
+        return new TypeSafeMatcher<Class>() {
+            private boolean isFinal;
+            private boolean onlyOneCtor;
+            private boolean isConstructorPrivate;
+            private Method nonStaticMethod;
+
+            @Override
+            @SneakyThrows({NoSuchMethodException.class, InstantiationException.class, IllegalAccessException.class, InvocationTargetException.class})
+            protected boolean matchesSafely(Class clazz) {
+                isFinal = Modifier.isFinal(clazz.getModifiers());
+                if (!isFinal) {
+                    return false;
+                }
+
+                onlyOneCtor = clazz.getDeclaredConstructors().length == 1;
+                if (!onlyOneCtor) {
+                    return false;
+                }
+
+                final Constructor<?> constructor = clazz.getDeclaredConstructor();
+                isConstructorPrivate = !constructor.isAccessible() && Modifier.isPrivate(constructor.getModifiers());
+                if (!isConstructorPrivate) {
+                    return false;
+                }
+
+                constructor.setAccessible(true);
+                constructor.newInstance();
+                constructor.setAccessible(false);
+                for (final Method method : clazz.getMethods()) {
+                    if (!Modifier.isStatic(method.getModifiers())
+                            && method.getDeclaringClass().equals(clazz)) {
+                        nonStaticMethod = method;
+                        return false;
+                    }
+                }
+
+                return true;
+            }
+
+            @Override
+            public void describeTo(Description description) {
+                description.appendText("Class must be a well defined utility class ");
+            }
+
+            @Override
+            protected void describeMismatchSafely(final Class item, final Description mismatchDescription) {
+                if (!isFinal) {
+                    mismatchDescription.appendText(" class is not final");
+                } else if (!onlyOneCtor) {
+                    mismatchDescription.appendText(" has not exactly one constructor");
+                } else if (!isConstructorPrivate) {
+                    mismatchDescription.appendText(" constructor is not private");
+                } else if (nonStaticMethod != null) {
+                    mismatchDescription.appendText(" method ").appendValue(nonStaticMethod).appendText(" is not static");
+                }
+            }
+        };
+    }
+}
diff --git a/src/test/java/org/s4s/modell/object/dto/ProductTest.java b/src/test/java/org/s4s/modell/object/dto/ProductTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..3891b1c3af47b392624a87d5eceaeec2a0a48270
--- /dev/null
+++ b/src/test/java/org/s4s/modell/object/dto/ProductTest.java
@@ -0,0 +1,40 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.modell.object.dto;
+import java.util.HashMap;
+import java.util.Map;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.hasEntry;
+import static org.hamcrest.Matchers.not;
+import org.junit.Before;
+import org.junit.Test;
+import org.s4s.modell.objects.dto.Product;
+
+/**
+ *
+ * @author Holger
+ */
+public class ProductTest {    
+    
+    @Test
+    public void shouldComplyHashCodeContract() {
+
+      Product p1 = new Product("Glühbirne", 1, "Elektronik",1.50, "Halt ne Glühbirne");
+      Product p2 = new Product("Glühbirne", 1, "Elektronik",1.50, "Halt ne Glühbirne");
+      Product p3 = new Product("LED", 2, "Elektronik",7.99, "Halt ein LED");
+        
+        Map<Product, String> map = new HashMap<>();
+
+        map.put(p1, "a");
+        map.put(p2, "b");
+        map.put(p3, "c");
+
+        assertThat(map, not(hasEntry(new Product("Glühbirne", 1, "Elektronik",1.50, "Halt ne Glühbirne"), "a")));
+        assertThat(map, hasEntry(new Product("Glühbirne", 1, "Elektronik",1.50, "Halt ne Glühbirne"), "b"));
+        assertThat(map, hasEntry(new Product("LED", 2, "Elektronik",7.99, "Halt ein LED"), "c"));
+    }
+
+}
diff --git a/src/test/java/org/s4s/modell/object/dto/WarenkorbTest.java b/src/test/java/org/s4s/modell/object/dto/WarenkorbTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..0fef861cc5a8b7d2a568dc69c143f65064310ccb
--- /dev/null
+++ b/src/test/java/org/s4s/modell/object/dto/WarenkorbTest.java
@@ -0,0 +1,74 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.modell.object.dto;
+
+
+import org.junit.Assert;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.s4s.modell.objects.dto.Product;
+import org.s4s.modell.objects.dto.Warenkorb;
+
+/**
+ *
+ * @author Holger
+ */
+public class WarenkorbTest {
+    Product p1 = new Product();
+    Product p2 = new Product();
+    Product p3 = new Product();
+    Warenkorb warenkorb;
+    
+    @Before
+    public void setUp(){        
+        warenkorb = new Warenkorb();
+        p1 = new Product("Glühbirne", 1, "Elektronik",1.50, "Halt ne Glühbirne");
+        p2 = new Product("LED", 2, "Elektronik",7.99, "Halt ein LED");
+        p3 = new Product("Neonröhre", 3, "Elektronik",19.95, "Halt ne Neonröhre");
+    }
+    @Test(expected = NullPointerException.class)
+    public void test_add(){
+        warenkorb.add(p1);
+        assertTrue(warenkorb.contains(p1));
+        warenkorb.add(p2);
+        assertTrue(warenkorb.contains(p2));
+        warenkorb.add(p3);
+        assertTrue(warenkorb.contains(p3));
+        warenkorb.add(null);
+
+    }
+    
+    @Test(expected = NullPointerException.class)
+    public void test_remove(){
+        warenkorb.add(p1);
+        warenkorb.remove(p1);
+        assertFalse(warenkorb.contains(p1));
+        warenkorb.remove(null);
+    }
+    
+     @Test(expected = IllegalArgumentException.class)
+     public void test_remove_notcontains(){
+         warenkorb.remove(p1);
+     
+     }
+    @Test
+    public void test_sum(){    
+        warenkorb.add(p1);
+        assertEquals(1.50,warenkorb.sum(), 0.001);
+        warenkorb.add(p2);
+        assertEquals(9.49,warenkorb.sum(), 0.001);
+        warenkorb.add(p3);
+        assertEquals(29.44,warenkorb.sum(), 0.001);
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void test_contains(){
+        warenkorb.contains(null);
+    }
+}
diff --git a/src/test/java/org/s4s/services/util/ViewsTest.java b/src/test/java/org/s4s/services/util/ViewsTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..28527ef24aecab1ad4a6bf6bdcaaf534c28e9f47
--- /dev/null
+++ b/src/test/java/org/s4s/services/util/ViewsTest.java
@@ -0,0 +1,21 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.s4s.services.util;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import org.junit.Test;
+import static org.s4s.matchers.UtilityMatchers.isWellDefinedUtilityClass;
+
+/**
+ *
+ * @author Holger
+ */
+public class ViewsTest {
+    @Test
+    public void shouldCheckIfUtilityClassIsWellCoded() throws Exception {
+        assertThat(Views.class, isWellDefinedUtilityClass());
+    } 
+}
diff --git a/target/classes/org/s4s/MyUI$MyUIServlet.class b/target/classes/org/s4s/MyUI$MyUIServlet.class
index 6f0ae277adc91764a43f3225c09b1cb007100a33..4fabc72c0a6cea28aa4c3c0ecb4b0523252f2231 100644
Binary files a/target/classes/org/s4s/MyUI$MyUIServlet.class and b/target/classes/org/s4s/MyUI$MyUIServlet.class differ
diff --git a/target/classes/org/s4s/MyUI.class b/target/classes/org/s4s/MyUI.class
index 2a3154d514c76342ccfae7133f33c5850b7e0e14..b7c2a3afa945bd0a41c50b09c320e030d3531a00 100644
Binary files a/target/classes/org/s4s/MyUI.class and b/target/classes/org/s4s/MyUI.class differ
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index d38b2aa6978edcce0fee233c323a4de06d944ff7..adffa0e826a286a372eeef5956fa74bafd699f45 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,7 +1,19 @@
-org\s4s\modell\objects\dto\Product.class
+org\s4s\gui\views\KaufbestaetigungView.class
+org\s4s\gui\views\PasswortView.class
+org\s4s\gui\views\VerkaeuferbewertungView.class
+org\s4s\gui\views\CheckoutView.class
 org\s4s\gui\views\WelcomeView.class
-org\s4s\process\controll\ProductSearch.class
+org\s4s\modell\objects\dto\Warenkorb.class
+org\s4s\gui\views\ShopView.class
 org\s4s\MyUI.class
+org\s4s\modell\objects\dto\Kunde.class
+org\s4s\gui\views\BenutzerkontoView.class
+org\s4s\modell\objects\dto\Product.class
+org\s4s\gui\views\ImpressumView.class
+org\s4s\process\controll\ProductSearch.class
+org\s4s\gui\views\LoginView.class
+org\s4s\gui\views\FaqView.class
+org\s4s\gui\views\WarenkorbView.class
 org\s4s\services\util\Views.class
+org\s4s\gui\views\ArtikeldetailsView.class
 org\s4s\MyUI$MyUIServlet.class
-org\s4s\gui\views\MainView.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 4baeefa9dde9326f42bc91b4600c1fa66ca1d1ce..c744e91c15a8dac8494420ce08bd409a9ff57046 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,6 +1,18 @@
-C:\Users\Holger\Documents\NetBeansProjects\s4s\src\main\java\org\s4s\process\controll\ProductSearch.java
-C:\Users\Holger\Documents\NetBeansProjects\s4s\src\main\java\org\s4s\MyUI.java
-C:\Users\Holger\Documents\NetBeansProjects\s4s\src\main\java\org\s4s\modell\objects\dto\Product.java
-C:\Users\Holger\Documents\NetBeansProjects\s4s\src\main\java\org\s4s\gui\views\WelcomeView.java
-C:\Users\Holger\Documents\NetBeansProjects\s4s\src\main\java\org\s4s\services\util\Views.java
-C:\Users\Holger\Documents\NetBeansProjects\s4s\src\main\java\org\s4s\gui\views\MainView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\WelcomeView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\PasswortView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\ArtikeldetailsView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\BenutzerkontoView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\CheckoutView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\FaqView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\WarenkorbView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\process\controll\ProductSearch.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\MyUI.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\modell\objects\dto\Product.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\ImpressumView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\LoginView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\modell\objects\dto\Warenkorb.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\services\util\Views.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\ShopView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\modell\objects\dto\Kunde.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\KaufbestaetigungView.java
+C:\Users\Holger\Documents\NetBeansProjects\s4s_MeineTests\src\main\java\org\s4s\gui\views\VerkaeuferbewertungView.java