diff --git a/src/pizzeria/CheesePizza.java b/src/pizzeria/CheesePizza.java
deleted file mode 100644
index ec07deda36532628c2d1dd9656b6031173cf26f1..0000000000000000000000000000000000000000
--- a/src/pizzeria/CheesePizza.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package pizzeria;
-
-public class CheesePizza extends Pizza {
-	public CheesePizza() {
-		name = "Cheese Pizza";
-		dough = "Regular Crust";
-		sauce = "Marinara Pizza Sauce";
-		toppings.add("Fresh Mozzarella");
-		toppings.add("Parmesan");
-	}
-}
diff --git a/src/pizzeria/ChicagoPizzaFactory.java b/src/pizzeria/ChicagoPizzaFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ec9648f0f22d0b576b3840e0cfb1e33b02f15eb
--- /dev/null
+++ b/src/pizzeria/ChicagoPizzaFactory.java
@@ -0,0 +1,21 @@
+package pizzeria;
+
+public class ChicagoPizzaFactory {
+
+	public Pizza createPizza(String type) {
+		Pizza pizza = null;
+
+		if (type.equals("cheese")) {
+			pizza = new ChicagoStyleCheesePizza();
+		} else if (type.equals("pepperoni")) {
+			pizza = new ChicagoStylePepperoniPizza();
+		} else if (type.equals("clam")) {
+			pizza = new ChicagoStyleClamPizza();
+		} else if (type.equals("veggie")) {
+			pizza = new ChicagoStyleVeggiePizza();
+		}
+		return pizza;
+	}
+
+}
+
diff --git a/src/pizzeria/ChicagoPizzaStore.java b/src/pizzeria/ChicagoPizzaStore.java
new file mode 100644
index 0000000000000000000000000000000000000000..228812185a6a405ccaecd9ba029e7a5ccca7b4f3
--- /dev/null
+++ b/src/pizzeria/ChicagoPizzaStore.java
@@ -0,0 +1,22 @@
+package pizzeria;
+
+public class ChicagoPizzaStore {
+	ChicagoPizzaFactory factory;
+ 
+	public ChicagoPizzaStore(ChicagoPizzaFactory factory) {
+		this.factory = factory;
+	}
+ 
+	public Pizza orderPizza(String type) {
+		Pizza pizza;
+ 
+		pizza = factory.createPizza(type);
+ 
+		pizza.prepare();
+		pizza.bake();
+		//pizza.cut();
+		pizza.box();
+
+		return pizza;
+	}
+}
diff --git a/src/pizzeria/ChicagoStyleCheesePizza.java b/src/pizzeria/ChicagoStyleCheesePizza.java
new file mode 100644
index 0000000000000000000000000000000000000000..9708ec5394d319a998c5554db55fafa1b8dc6072
--- /dev/null
+++ b/src/pizzeria/ChicagoStyleCheesePizza.java
@@ -0,0 +1,16 @@
+package pizzeria;
+
+public class ChicagoStyleCheesePizza extends Pizza {
+
+	public ChicagoStyleCheesePizza() { 
+		name = "Chicago Style Deep Dish Cheese Pizza";
+		dough = "Extra Thick Crust Dough";
+		sauce = "Plum Tomato Sauce";
+ 
+		toppings.add("Shredded Mozzarella Cheese");
+	}
+ 
+	public void cut() {
+		System.out.println("Cutting the pizza into square slices");
+	}
+}
diff --git a/src/pizzeria/ChicagoStyleClamPizza.java b/src/pizzeria/ChicagoStyleClamPizza.java
new file mode 100644
index 0000000000000000000000000000000000000000..2216bbe3f0517ce9b3814dff1fc95b397c7eb43f
--- /dev/null
+++ b/src/pizzeria/ChicagoStyleClamPizza.java
@@ -0,0 +1,16 @@
+package pizzeria;
+
+public class ChicagoStyleClamPizza extends Pizza {
+	public ChicagoStyleClamPizza() {
+		name = "Chicago Style Clam Pizza";
+		dough = "Extra Thick Crust Dough";
+		sauce = "Plum Tomato Sauce";
+ 
+		toppings.add("Shredded Mozzarella Cheese");
+		toppings.add("Frozen Clams from Chesapeake Bay");
+	}
+ 
+	public void cut() {
+		System.out.println("Cutting the pizza into square slices");
+	}
+}
diff --git a/src/pizzeria/ChicagoStylePepperoniPizza.java b/src/pizzeria/ChicagoStylePepperoniPizza.java
new file mode 100644
index 0000000000000000000000000000000000000000..4618e685266093b138b1fb3b61ae0d37215c47a1
--- /dev/null
+++ b/src/pizzeria/ChicagoStylePepperoniPizza.java
@@ -0,0 +1,19 @@
+package pizzeria;
+
+public class ChicagoStylePepperoniPizza extends Pizza {
+	public ChicagoStylePepperoniPizza() {
+		name = "Chicago Style Pepperoni Pizza";
+		dough = "Extra Thick Crust Dough";
+		sauce = "Plum Tomato Sauce";
+ 
+		toppings.add("Shredded Mozzarella Cheese");
+		toppings.add("Black Olives");
+		toppings.add("Spinach");
+		toppings.add("Eggplant");
+		toppings.add("Sliced Pepperoni");
+	}
+ 
+	public void cut() {
+		System.out.println("Cutting the pizza into square slices");
+	}
+}
diff --git a/src/pizzeria/ChicagoStyleVeggiePizza.java b/src/pizzeria/ChicagoStyleVeggiePizza.java
new file mode 100644
index 0000000000000000000000000000000000000000..9f2270851dd1a12fa7a9705ec2f97e1612d233e0
--- /dev/null
+++ b/src/pizzeria/ChicagoStyleVeggiePizza.java
@@ -0,0 +1,18 @@
+package pizzeria;
+
+public class ChicagoStyleVeggiePizza extends Pizza {
+	public ChicagoStyleVeggiePizza() {
+		name = "Chicago Deep Dish Veggie Pizza";
+		dough = "Extra Thick Crust Dough";
+		sauce = "Plum Tomato Sauce";
+ 
+		toppings.add("Shredded Mozzarella Cheese");
+		toppings.add("Black Olives");
+		toppings.add("Spinach");
+		toppings.add("Eggplant");
+	}
+ 
+	public void cut() {
+		System.out.println("Cutting the pizza into square slices");
+	}
+}
diff --git a/src/pizzeria/ClamPizza.java b/src/pizzeria/ClamPizza.java
deleted file mode 100644
index 7159d5ea12f29c5c75f160155d3050de490a7130..0000000000000000000000000000000000000000
--- a/src/pizzeria/ClamPizza.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package pizzeria;
-
-public class ClamPizza extends Pizza {
-	public ClamPizza() {
-		name = "Clam Pizza";
-		dough = "Thin crust";
-		sauce = "White garlic sauce";
-		toppings.add("Clams");
-		toppings.add("Grated parmesan cheese");
-	}
-}
diff --git a/src/pizzeria/NYPizzaFactory.java b/src/pizzeria/NYPizzaFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..6d6402ad11402f31a14db43e370beb2964ec38fb
--- /dev/null
+++ b/src/pizzeria/NYPizzaFactory.java
@@ -0,0 +1,21 @@
+package pizzeria;
+
+public class NYPizzaFactory {
+
+	public Pizza createPizza(String type) {
+		Pizza pizza = null;
+
+		if (type.equals("cheese")) {
+			pizza = new NYStyleCheesePizza();
+		} else if (type.equals("pepperoni")) {
+			pizza = new NYStylePepperoniPizza();
+		} else if (type.equals("clam")) {
+			pizza = new NYStyleClamPizza();
+		} else if (type.equals("veggie")) {
+			pizza = new NYStyleVeggiePizza();
+		}
+		return pizza;
+	}
+
+}
+
diff --git a/src/pizzeria/NYPizzaStore.java b/src/pizzeria/NYPizzaStore.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b4ce8a5a88630f5b2010384560b8e24dd3a22ef
--- /dev/null
+++ b/src/pizzeria/NYPizzaStore.java
@@ -0,0 +1,28 @@
+package pizzeria;
+
+public class NYPizzaStore {
+	NYPizzaFactory factory;
+ 
+	public NYPizzaStore(NYPizzaFactory factory) { 
+		this.factory = factory;
+	}
+ 
+	public Pizza orderPizza(String type) {
+		Pizza pizza;
+ 
+		pizza = factory.createPizza(type);
+ 
+		pizza.prepare();
+		pizza.bake();
+		pizza.cut();
+		//pizza.box();
+		nyBox(pizza);
+		
+		return pizza;
+	}
+	
+	public void nyBox(Pizza pizza) {
+		System.out.println("NY style boxing " + pizza.name);
+	}
+	
+}
diff --git a/src/pizzeria/NYStyleCheesePizza.java b/src/pizzeria/NYStyleCheesePizza.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ba90a6d0ef654777b95f5f111f128f4da8f37c2
--- /dev/null
+++ b/src/pizzeria/NYStyleCheesePizza.java
@@ -0,0 +1,12 @@
+package pizzeria;
+
+public class NYStyleCheesePizza extends Pizza {
+
+	public NYStyleCheesePizza() { 
+		name = "NY Style Sauce and Cheese Pizza";
+		dough = "Thin Crust Dough";
+		sauce = "Marinara Sauce";
+ 
+		toppings.add("Grated Reggiano Cheese");
+	}
+}
diff --git a/src/pizzeria/NYStyleClamPizza.java b/src/pizzeria/NYStyleClamPizza.java
new file mode 100644
index 0000000000000000000000000000000000000000..23935afcdb739e9fd445ea98bc7dafdc0618b8c5
--- /dev/null
+++ b/src/pizzeria/NYStyleClamPizza.java
@@ -0,0 +1,13 @@
+package pizzeria;
+
+public class NYStyleClamPizza extends Pizza {
+
+	public NYStyleClamPizza() {
+		name = "NY Style Clam Pizza";
+		dough = "Thin Crust Dough";
+		sauce = "Marinara Sauce";
+ 
+		toppings.add("Grated Reggiano Cheese");
+		toppings.add("Fresh Clams from Long Island Sound");
+	}
+}
diff --git a/src/pizzeria/NYStylePepperoniPizza.java b/src/pizzeria/NYStylePepperoniPizza.java
new file mode 100644
index 0000000000000000000000000000000000000000..66cde53bf5f64eba0fcdf9439661be79032fb7bb
--- /dev/null
+++ b/src/pizzeria/NYStylePepperoniPizza.java
@@ -0,0 +1,17 @@
+package pizzeria;
+
+public class NYStylePepperoniPizza extends Pizza {
+
+	public NYStylePepperoniPizza() {
+		name = "NY Style Pepperoni Pizza";
+		dough = "Thin Crust Dough";
+		sauce = "Marinara Sauce";
+ 
+		toppings.add("Grated Reggiano Cheese");
+		toppings.add("Sliced Pepperoni");
+		toppings.add("Garlic");
+		toppings.add("Onion");
+		toppings.add("Mushrooms");
+		toppings.add("Red Pepper");
+	}
+}
diff --git a/src/pizzeria/NYStyleVeggiePizza.java b/src/pizzeria/NYStyleVeggiePizza.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb66220bb3543eac70674d7c09377b60e8f3a795
--- /dev/null
+++ b/src/pizzeria/NYStyleVeggiePizza.java
@@ -0,0 +1,16 @@
+package pizzeria;
+
+public class NYStyleVeggiePizza extends Pizza {
+
+	public NYStyleVeggiePizza() {
+		name = "NY Style Veggie Pizza";
+		dough = "Thin Crust Dough";
+		sauce = "Marinara Sauce";
+ 
+		toppings.add("Grated Reggiano Cheese");
+		toppings.add("Garlic");
+		toppings.add("Onion");
+		toppings.add("Mushrooms");
+		toppings.add("Red Pepper");
+	}
+}
diff --git a/src/pizzeria/PepperoniPizza.java b/src/pizzeria/PepperoniPizza.java
deleted file mode 100644
index 30464f605bc080f1804881368da7e92c7888a563..0000000000000000000000000000000000000000
--- a/src/pizzeria/PepperoniPizza.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package pizzeria;
-
-public class PepperoniPizza extends Pizza {
-	public PepperoniPizza() {
-		name = "Pepperoni Pizza";
-		dough = "Crust";
-		sauce = "Marinara sauce";
-		toppings.add("Sliced Pepperoni");
-		toppings.add("Sliced Onion");
-		toppings.add("Grated parmesan cheese");
-	}
-}
diff --git a/src/pizzeria/PizzaStore.java b/src/pizzeria/PizzaStore.java
deleted file mode 100644
index 10c606763bda0c05649e729cb805735c0cec20b3..0000000000000000000000000000000000000000
--- a/src/pizzeria/PizzaStore.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package pizzeria;
-
-public class PizzaStore {
- 
-	public Pizza orderPizza(String type) {
-		Pizza pizza;
- 
-		pizza = StaticSimplePizzaFactory.createPizza(type);
- 
-		pizza.prepare();
-		pizza.bake();
-		pizza.cut();
-		pizza.box();
-
-		return pizza;
-	}
-
-}
diff --git a/src/pizzeria/PizzaTestDrive.java b/src/pizzeria/PizzaTestDrive.java
index 80dbd4b92b9aac3f061fd6a82fb5602ef83b1686..23bb5051960d27dcd5ea08b3eca10a98d385b4ed 100644
--- a/src/pizzeria/PizzaTestDrive.java
+++ b/src/pizzeria/PizzaTestDrive.java
@@ -3,12 +3,16 @@ package pizzeria;
 public class PizzaTestDrive {
  
 	public static void main(String[] args) {
-		PizzaStore store = new PizzaStore();
+		NYPizzaFactory nyFactory = new NYPizzaFactory();
+		NYPizzaStore nyStore = new NYPizzaStore(nyFactory);
 
-		Pizza pizza = store.orderPizza("cheese");
+		Pizza pizza = nyStore.orderPizza("cheese");
 		System.out.println("We ordered a " + pizza.getName() + "\n");
  
-		pizza = store.orderPizza("veggie");
+		ChicagoPizzaFactory chicagoFactory = new ChicagoPizzaFactory();
+		ChicagoPizzaStore chicagoStore = new ChicagoPizzaStore(chicagoFactory);
+		
+		pizza = chicagoStore.orderPizza("veggie");
 		System.out.println("We ordered a " + pizza.getName() + "\n");
 
 	}
diff --git a/src/pizzeria/StaticSimplePizzaFactory.java b/src/pizzeria/StaticSimplePizzaFactory.java
deleted file mode 100644
index 23a6febe1167d59da7cdccee940ad8330533cbf9..0000000000000000000000000000000000000000
--- a/src/pizzeria/StaticSimplePizzaFactory.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package pizzeria;
-
-public class StaticSimplePizzaFactory {
-
-	public static Pizza createPizza(String type) {
-		Pizza pizza = null;
-
-		if (type.equals("cheese")) {
-			pizza = new CheesePizza();
-		} else if (type.equals("pepperoni")) {
-			pizza = new PepperoniPizza();
-		} else if (type.equals("clam")) {
-			pizza = new ClamPizza();
-		} else if (type.equals("veggie")) {
-			pizza = new VeggiePizza();
-		}
-		return pizza;
-	}
-}
diff --git a/src/pizzeria/VeggiePizza.java b/src/pizzeria/VeggiePizza.java
deleted file mode 100644
index 63429c1a3859289365057a79f236dfeb884e0e2b..0000000000000000000000000000000000000000
--- a/src/pizzeria/VeggiePizza.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package pizzeria;
-
-public class VeggiePizza extends Pizza {
-	public VeggiePizza() {
-		name = "Veggie Pizza";
-		dough = "Crust";
-		sauce = "Marinara sauce";
-		toppings.add("Shredded mozzarella");
-		toppings.add("Grated parmesan");
-		toppings.add("Diced onion");
-		toppings.add("Sliced mushrooms");
-		toppings.add("Sliced red pepper");
-		toppings.add("Sliced black olives");
-	}
-}