diff --git a/New/Addresses/.gitignore b/New/Addresses/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..a1c3ab4d08c0f9f91918f21c730272a4711885e8
--- /dev/null
+++ b/New/Addresses/.gitignore
@@ -0,0 +1,4 @@
+/target/
+/.settings/
+.classpath
+.project
diff --git a/New/Addresses/Readme.txt b/New/Addresses/Readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..82356dbd7de995a404e4571fdcc5463cb0265fe7
--- /dev/null
+++ b/New/Addresses/Readme.txt
@@ -0,0 +1,6 @@
+On Maven import you will see:
+
+Access restriction: The type 'ObservableList<Address>' is not API (restriction on required library '/usr/lib/jvm/java-8-oracle/jre/lib/ext/jfxrt.jar')
+
+You may get rid of these messages by manually removing and adding 
+the standard Java library to your Java build path. 
\ No newline at end of file
diff --git a/New/Addresses/pom.xml b/New/Addresses/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2568bfc457884597775307688dea09966e17d710
--- /dev/null
+++ b/New/Addresses/pom.xml
@@ -0,0 +1,67 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  
+  <groupId>de.hdm-stuttgart.mi.sd1</groupId>
+  <artifactId>address</artifactId>
+  <version>0.1</version>
+  <packaging>jar</packaging>
+  
+  <name>address</name>
+
+  <!--Fixme: Add a sensible project related domain here -->
+  <url>http://somedomain.org</url>
+  
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  
+  <dependencies>
+    
+  </dependencies>
+  
+  <build>
+    <plugins>
+
+        <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <source>1.8</source>
+          <target>1.8</target>
+        </configuration>
+      </plugin>
+
+    <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <version>2.10.1</version>
+        <configuration/>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>2.3</version>
+        <configuration>
+          <transformers>
+            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+              <manifestEntries>
+                <Main-Class>de.hdm_stuttgart.mi.sd1.goikstart.App</Main-Class>
+              </manifestEntries>
+            </transformer>
+          </transformers>
+        </configuration>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      
+    </plugins>
+  </build>
+</project>
diff --git a/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/AddressListScene.java b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/AddressListScene.java
new file mode 100644
index 0000000000000000000000000000000000000000..3a542b4ae59690c83827b15f936747a27ddf1616
--- /dev/null
+++ b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/AddressListScene.java
@@ -0,0 +1,68 @@
+package de.hdm_stuttgart.mi.sd1.address;
+
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.FIRST_NAME;
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.LAST_NAME;
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.STREET;
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.TEL;
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.TOWN;
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.ZIP;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.scene.layout.StackPane;
+import de.hdm_stuttgart.mi.sd1.address.model.Address;
+
+public class AddressListScene extends Scene {
+
+	final TableView<Address> addressTable = new TableView<Address>();
+
+	final ObservableList<Address> personData = FXCollections
+			.observableArrayList(new Address("Martin","Goik", "Nobelstr. 10", 70579, "Stuttgart", "0711 8923 2188"), 
+								new Address("Jens","Hahn", "Nobelstr. 10", 70579, "Stuttgart", "0711 8923 2157"));
+
+	final TableColumn<Address, String> firstNameCol = new TableColumn <Address, String>(FIRST_NAME.extern);
+	final TableColumn<Address, String>  lastNameCol = new TableColumn <Address, String>(LAST_NAME.extern);
+	final TableColumn<Address, String>  street = new TableColumn <Address, String>(STREET.extern);
+	final TableColumn<Address, Integer>  zip = new TableColumn <Address, Integer>(ZIP.extern);
+	final TableColumn<Address, String>  town = new TableColumn <Address, String>(TOWN.extern); 
+	final TableColumn<Address, String>  tel = new TableColumn <Address, String>(TEL.extern);
+
+	public AddressListScene(Main parent) {
+		super(parent.root);
+
+		firstNameCol.setCellValueFactory(new PropertyValueFactory<Address, String>(FIRST_NAME.intern));
+		lastNameCol.setCellValueFactory(new PropertyValueFactory<Address, String>(LAST_NAME.intern));
+		street.setCellValueFactory(new PropertyValueFactory<Address, String>(STREET.intern));
+		zip.setCellValueFactory(new PropertyValueFactory<Address, Integer>(ZIP.intern));
+		town.setCellValueFactory(new PropertyValueFactory<Address, String>(TOWN.intern));
+		tel.setCellValueFactory(new PropertyValueFactory<Address, String>(TEL.intern));
+
+		addressTable.setItems(personData);
+
+		addressTable.getColumns().add(firstNameCol);
+		addressTable.getColumns().add(lastNameCol);
+		addressTable.getColumns().add(street);
+		addressTable.getColumns().add(zip);
+		addressTable.getColumns().add(town);
+		addressTable.getColumns().add(tel);
+		
+		Button addAddress = new Button("Add address");
+		addAddress.setOnAction(event -> {
+			parent.addAddress();
+		});
+		
+		
+		StackPane basePane = new StackPane();
+		basePane.getChildren().addAll(addressTable, addAddress);
+		
+		setRoot(basePane);
+	}
+	
+	public void addAddress(final Address address) {
+		personData.add(address);
+	}
+}
diff --git a/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/LoginScene.java b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/LoginScene.java
new file mode 100644
index 0000000000000000000000000000000000000000..5cc6be1d02c45d005b2e2b2d1a2c9cd5846f9bd6
--- /dev/null
+++ b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/LoginScene.java
@@ -0,0 +1,50 @@
+package de.hdm_stuttgart.mi.sd1.address;
+
+import de.hdm_stuttgart.mi.sd1.address.security.Authenticator;
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.PasswordField;
+import javafx.scene.layout.GridPane;
+
+public class LoginScene extends Scene {
+
+	final Main parent;
+
+	public LoginScene(final Main parent) {
+		super(parent.root);
+		this.parent = parent;
+
+		final GridPane loginPane = new GridPane();
+		loginPane.setAlignment(Pos.CENTER);
+		loginPane.setHgap(10);
+		loginPane.setVgap(10);
+		loginPane.setPadding(new Insets(25, 25, 25, 25));
+
+		final Label enterPwLabel = new Label("Bitte Passwort eingeben:");
+		final PasswordField masterPw = new PasswordField();
+		
+		loginPane.add(enterPwLabel, 0, 0);
+		loginPane.add(masterPw, 0, 1);
+
+		final Button cancel = new Button ("cancel");
+		cancel.setOnAction(event -> System.exit(0));
+		loginPane.add(cancel, 0, 2);
+		
+		final Button oK = new Button ("oK");
+		oK.setDefaultButton(true);
+		oK.setOnAction(event -> {
+			if (Authenticator.validate(masterPw.getText())) {
+				parent.showAddresses();
+			} else {
+				System.exit(0);
+			}
+		});
+		loginPane.add(oK, 1, 2);
+
+		setRoot(loginPane);
+	}
+
+}
diff --git a/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/Main.java b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/Main.java
new file mode 100644
index 0000000000000000000000000000000000000000..e85222b78ec96ffa164dac36e292c99703d962df
--- /dev/null
+++ b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/Main.java
@@ -0,0 +1,64 @@
+package de.hdm_stuttgart.mi.sd1.address;
+
+import javafx.application.Application;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+	final StackPane root;
+
+	final LoginScene loginScene;
+	
+	public final AddressListScene browseAddresses;
+	public final NewAddressScene newAddress;
+	
+	Stage primaryStage;
+	
+	public Main() {
+		root = new StackPane();
+		
+    	loginScene = new LoginScene(this);
+    	newAddress = new NewAddressScene(this);
+    	
+    	browseAddresses = new AddressListScene(this);
+    	browseAddresses.getStylesheets().add(getClass().getResource("styles.css").toExternalForm());
+    	
+	}
+	
+    @Override
+    public void start(final Stage primaryStage) {
+    	this.primaryStage = primaryStage;
+
+        primaryStage.setTitle("Adressverwaltung");
+        primaryStage.setScene(loginScene);
+        primaryStage.show();
+        
+    }
+
+    /**
+     * The main() method is ignored in correctly deployed JavaFX application.
+     * main() serves only as fallback in case the application can not be
+     * launched through deployment artifacts, e.g., in IDEs with limited FX
+     * support. NetBeans ignores main().
+     *
+     * @param args the command line arguments
+     */
+    public static void main(String[] args) {
+        launch(args);
+    }
+    
+    
+    public void showAddresses() {
+    	primaryStage.setScene(browseAddresses);
+    	primaryStage.sizeToScene();
+    	primaryStage.show();
+    	
+    }
+    public void addAddress() {
+    	primaryStage.setScene(newAddress);
+    	primaryStage.sizeToScene();
+    	primaryStage.show();
+    	
+    }
+}
\ No newline at end of file
diff --git a/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/NewAddressScene.java b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/NewAddressScene.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b9503372f29e766f9eb14396ddbb7726a40be85
--- /dev/null
+++ b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/NewAddressScene.java
@@ -0,0 +1,78 @@
+package de.hdm_stuttgart.mi.sd1.address;
+
+
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.FIRST_NAME;
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.LAST_NAME;
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.STREET;
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.TEL;
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.TOWN;
+import static de.hdm_stuttgart.mi.sd1.address.model.Address.Column.ZIP;
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.GridPane;
+import de.hdm_stuttgart.mi.sd1.address.model.Address;
+
+public class NewAddressScene extends Scene {
+
+	final Main parent;
+
+	final TextField firstName = new TextField()
+	,lastName = new TextField()
+	,street = new TextField()
+	,zip = new TextField()
+	,town = new TextField()
+	,tel = new TextField()
+	;
+
+	
+	public NewAddressScene(final Main parent) {
+		super(parent.root);
+		this.parent = parent;
+
+		final GridPane addressPane = new GridPane();
+		addressPane.setAlignment(Pos.CENTER);
+		addressPane.setHgap(10);
+		addressPane.setVgap(10);
+		addressPane.setPadding(new Insets(25, 25, 25, 25));
+
+		int rowIndex = 0;
+		addressPane.add(new Label(FIRST_NAME.extern), 0, rowIndex);
+		addressPane.add(firstName, 1, rowIndex++);
+
+		addressPane.add(new Label(LAST_NAME.extern),0 , rowIndex);
+		addressPane.add(lastName, 1 , rowIndex++);
+
+		addressPane.add(new Label(STREET.extern),0 , rowIndex);
+		addressPane.add(street, 1 , rowIndex++);
+
+		addressPane.add(new Label(ZIP.extern),0 , rowIndex);
+		addressPane.add(zip, 1 , rowIndex++);
+
+		addressPane.add(new Label(TOWN.extern),0 , rowIndex);
+		addressPane.add(town, 1 , rowIndex++);
+
+		addressPane.add(new Label(TEL.extern),0 , rowIndex);
+		addressPane.add(tel, 1 , rowIndex++);
+
+		final Button cancel = new Button ("cancel");
+		cancel.setOnAction(event -> System.exit(0));
+		addressPane.add(cancel, 0, rowIndex);
+		
+		final Button oK = new Button ("oK");
+		oK.setDefaultButton(true);
+		oK.setOnAction(event -> {
+			final Address nAdr = new Address(firstName.getText(), lastName.getText(), street.getText(), 
+					Integer.parseInt(zip.getText()), town.getText(), tel.getText());
+			parent.browseAddresses.addAddress(nAdr);
+			parent.showAddresses();
+		});
+		addressPane.add(oK, 1, rowIndex++);
+
+		setRoot(addressPane);
+	}
+
+}
diff --git a/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/model/Address.java b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/model/Address.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e9f9ceb71d5ec6df206ea3ffc961f1554e2f27e
--- /dev/null
+++ b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/model/Address.java
@@ -0,0 +1,98 @@
+package de.hdm_stuttgart.mi.sd1.address.model;
+
+public class Address implements Comparable<Address> {
+	public enum Column {
+
+		FIRST_NAME("firstName", "First name")
+		,LAST_NAME("lastName", "Last name")
+		,STREET("street", "Street")
+		,ZIP("zip", "Zip code")
+		,TOWN("town", "Town")
+		,TEL("lastName", "Last name")
+		;
+
+		Column(final String intern, final String extern) {
+			this.intern = intern;
+			this.extern = extern;
+		}
+
+		public final String
+		intern,
+		extern; // May become subject to internationalization
+	}
+	private String firstName;
+	private String lastName;
+	private String street;
+	private int zip;
+	private String town;
+	private String tel;
+
+	public Address(
+			final String firstName,
+			final String lastName,
+			final String street,
+			final int zip,
+			final String town,
+			final String tel) {
+		setFirstName(firstName);
+		setLastName(lastName);
+		setStreet(street);
+		setZip(zip);
+		setTown(town);
+		setTel(tel);
+	}
+
+	public String getFirstName() {
+		return firstName;
+	}
+
+	public void setFirstName(String firstName) {
+		this.firstName = firstName;
+	}
+
+	public String getLastName() {
+		return lastName;
+	}
+
+	public void setLastName(String lastName) {
+		this.lastName = lastName;
+	}
+
+	public String getStreet() {
+		return street;
+	}
+
+	public void setStreet(String street) {
+		this.street = street;
+	}
+
+	public int getZip() {
+		return zip;
+	}
+
+	public void setZip(int zip) {
+		this.zip = zip;
+	}
+
+	public String getTown() {
+		return town;
+	}
+
+	public void setTown(String town) {
+		this.town = town;
+	}
+
+	public String getTel() {
+		return tel;
+	}
+
+	public void setTel(String tel) {
+		this.tel = tel;
+	}
+
+	@Override
+	public int compareTo(Address other) {
+		return lastName.compareTo(other.lastName);
+	}
+
+}
diff --git a/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/security/Authenticator.java b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/security/Authenticator.java
new file mode 100644
index 0000000000000000000000000000000000000000..71ec4044180db721b1d5e9de61d58980572e20ff
--- /dev/null
+++ b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/security/Authenticator.java
@@ -0,0 +1,9 @@
+package de.hdm_stuttgart.mi.sd1.address.security;
+
+public class Authenticator {
+
+	static public boolean validate(final String password ) {
+		return password != null && password.equals("p");
+	}
+	
+}
diff --git a/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/styles.css b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/styles.css
new file mode 100644
index 0000000000000000000000000000000000000000..d6d45a97daa1786dde71de2e5af394c24262e04f
--- /dev/null
+++ b/New/Addresses/src/main/java/de/hdm_stuttgart/mi/sd1/address/styles.css
@@ -0,0 +1,43 @@
+/* Application wide styles */
+
+.label {
+    -fx-font-size: 12px;
+    -fx-font-weight: bold;
+    -fx-text-fill: #333333;
+    -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 );
+}
+
+.button {
+    -fx-text-fill: white;
+    -fx-font-family: "Arial Narrow";
+    -fx-font-weight: bold;
+    -fx-background-color: linear-gradient(#61a2b1, #2A5058);
+    -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1 );
+}
+
+.button:hover{
+	 -fx-background-color: #395bae;
+}
+
+/* Component specific styles */
+
+
+.main-panel {
+    -fx-background-image: url("../images/background.jpg");
+}
+
+.hello-message {
+    -fx-text-fill: #AA0000;
+    -fx-font-weight: bold;
+    -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 );
+}
+
+/* Have empty table cells disappear */
+/* http://fxexperience.com/2011/11/alternate-row-highlighting-in-empty-tableview-and-listview-rows */
+.table-row-cell:empty {
+    -fx-background-color: white;
+}
+ 
+.table-row-cell:empty .table-cell {
+    -fx-border-width: 0px;
+}
\ No newline at end of file