diff --git a/src/main/java/forelesning10/IShoppingList.java b/src/main/java/forelesning10/IShoppingList.java
new file mode 100644
index 0000000000000000000000000000000000000000..2c14f35746a3f6897145749248215a4934d248a8
--- /dev/null
+++ b/src/main/java/forelesning10/IShoppingList.java
@@ -0,0 +1,47 @@
+package forelesning10;
+
+import java.time.LocalDate;
+import java.util.List;
+
+public interface IShoppingList {
+
+	/**
+	 * Returns a list of all items you need to buy.
+	 * The order of items on this list is irrelevant.
+	 * Multiple items to shop for should occur multiple times on the list.
+	 * 
+	 * E.g. If you have 3 apples on your shopping list 
+	 * the list this method returns should contain 3 apples.
+	 * 
+	 * @return a list of all items to buy
+	 */
+	public List<ShoppingItem> getAllItems();
+	
+	/**
+	 * Adds an item to this list.
+	 * If item is not a valid ShoppingItem this method should throw an Exception.
+	 * 
+	 * @param item - the item to add
+	 */
+	public void add(ShoppingItem item);
+	
+	/**
+	 * This gives the date this ShoppingList was created
+	 * @return a date
+	 */
+	public LocalDate getDate();
+	
+	/**
+	 * This gives the total sum of the price for all items in the list
+	 * @return
+	 */
+	public double totalPrice();
+	
+	/**
+	 * This methods checks how many items on the list has a given name.
+	 * 
+	 * @param itemName - the name of the item to count
+	 * @return the number of items with the given name
+	 */
+	public int getItemCount(String itemName);
+}
diff --git a/src/main/java/forelesning10/ShoppingItem.java b/src/main/java/forelesning10/ShoppingItem.java
new file mode 100644
index 0000000000000000000000000000000000000000..d4e603792c30246cebcebb555fdc0776cf8d6637
--- /dev/null
+++ b/src/main/java/forelesning10/ShoppingItem.java
@@ -0,0 +1,31 @@
+package forelesning10;
+
+public class ShoppingItem {
+
+	private String name;
+	private double price;
+	
+	public ShoppingItem(String name, double price) {
+		super();
+		this.name = name;
+		this.price = price;
+	}
+
+	public String getName() {
+		return name;
+	}
+	
+	public double getPrice() {
+		return price;
+	}
+	
+	@Override
+	public boolean equals(Object obj) {
+		if(obj instanceof ShoppingItem) {
+			return getName().equals(((ShoppingItem) obj).getName());
+		}
+		return false;
+	}
+}
+
+
diff --git a/src/main/java/forelesning10/ShoppingList.java b/src/main/java/forelesning10/ShoppingList.java
new file mode 100644
index 0000000000000000000000000000000000000000..389098422f3e8f409298a70875510296be691748
--- /dev/null
+++ b/src/main/java/forelesning10/ShoppingList.java
@@ -0,0 +1,52 @@
+package forelesning10;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ShoppingList implements IShoppingList {
+
+	private ArrayList<ShoppingItem> handleliste;
+	private LocalDate date;
+	
+	public ShoppingList(LocalDate date) {
+		handleliste = new ArrayList<ShoppingItem>();
+		this.date=date;
+	}
+	
+	@Override
+	public List<ShoppingItem> getAllItems() {
+		return new ArrayList<ShoppingItem>( handleliste);
+	}
+
+	@Override
+	public void add(ShoppingItem item) {
+		if(item==null)
+			throw new IllegalArgumentException("item can not be null");
+		handleliste.add(item);		
+	}
+
+	@Override
+	public LocalDate getDate() {
+		return date;
+	}
+
+	@Override
+	public double totalPrice() {
+		double sum=0.0;
+		for(ShoppingItem item : handleliste) {
+			sum += item.getPrice();
+		}
+		return sum;
+	}
+
+	@Override
+	public int getItemCount(String itemName) {
+		int count=0;
+		for(ShoppingItem item : handleliste) {
+			if(item.getName().equals(itemName))
+				count++;
+		}
+		return count;
+	}
+}
diff --git a/src/main/java/forelesning10/UseIterator.java b/src/main/java/forelesning10/UseIterator.java
new file mode 100644
index 0000000000000000000000000000000000000000..b159a4fd72e7e09fd30b6dfa284c4bd21032e22b
--- /dev/null
+++ b/src/main/java/forelesning10/UseIterator.java
@@ -0,0 +1,65 @@
+package forelesning10;
+
+import static lecture9.Range.range;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+public class UseIterator {
+
+	public static void main(String[] args) {
+		Iterable<Integer> iterable = range(10);
+		Iterator<Integer> iterator = iterable.iterator();
+		ArrayList<Integer> list = range(10).getList();
+				
+		printMultiples(iterable, 4);
+		printMultiples(iterator, 4);
+		
+		printMultiplicationTable(iterable);
+		printMultiplicationTable(list);
+//		printMultiplicationTable(iterator);
+	}
+	
+	public static void printMultiples(Iterator<Integer> iter, int multiple) {
+//		System.out.println("Using Iterator");
+		while(iter.hasNext()) {
+			int i= iter.next();
+			System.out.print(i*multiple+"\t");
+		}
+		System.out.println();
+	}
+
+	public static void printMultiples(Iterable<Integer> iter, int multiple) {
+//		System.out.println("Using Iterable");
+		for(int i:iter) {
+			System.out.print(i*multiple+"\t");
+		}
+		System.out.println();
+	}
+	
+	public static void printMultiplicationTable(Iterable<Integer> iterable) {
+		System.out.println("Printing multiplication table");
+		int blank = 0;
+		Iterator<Integer> iter = iterable.iterator();
+		while(iter.hasNext()) {
+			for(int i=0; i < blank; i++)
+				System.out.print("\t");
+			int multiple = iter.next();
+			printMultiples(iterable, multiple);
+			iter.remove();
+			blank++;
+		}
+	}
+	
+	public static void printMultiplicationTable(Iterator<Integer> iter) {
+		System.out.println("Printing multiplication table");
+		while(iter.hasNext()) {
+			int multiple = iter.next();
+			printMultiples(iter, multiple);
+		}
+	}
+	
+	
+	
+	
+}
diff --git a/src/main/java/forelesning10/UseShoppingList.java b/src/main/java/forelesning10/UseShoppingList.java
new file mode 100644
index 0000000000000000000000000000000000000000..da14b033201ee475eaff95a03db9121f2349b61d
--- /dev/null
+++ b/src/main/java/forelesning10/UseShoppingList.java
@@ -0,0 +1,15 @@
+package forelesning10;
+
+import java.time.LocalDate;
+
+public class UseShoppingList {
+
+	public static void main(String[] args) {
+		ShoppingList hl = new ShoppingList(LocalDate.now());
+
+		hl.add(new ShoppingItem("Melk", 20));
+		hl.getAllItems().add(null);
+		System.out.println(hl.totalPrice());
+	}
+
+}
diff --git a/src/main/java/lecture9/Range.java b/src/main/java/lecture9/Range.java
index 4a7540716334120266eb4e1c2c83e4c286169093..561e87afc2a7aaf6ef32f55ccf24d6b2fb4ca1ac 100644
--- a/src/main/java/lecture9/Range.java
+++ b/src/main/java/lecture9/Range.java
@@ -11,7 +11,7 @@ public class Range implements Iterable<Integer>{
 		this.max = max;
 	}
 	
-	ArrayList<Integer> getList(){
+	public ArrayList<Integer> getList(){
 		ArrayList<Integer> indices = new ArrayList<Integer>();
 		for(int i=0; i<max; i++) {
 			indices.add(i);
@@ -21,10 +21,10 @@ public class Range implements Iterable<Integer>{
 
 	@Override
 	public Iterator<Integer> iterator() {
-		return getList().iterator();
+		return new RangeIterator(max);
 	}
 	
-	static Range range(int max) {
+	public static Range range(int max) {
 		return new Range(max);
 	}
 }
diff --git a/src/main/java/lecture9/RangeIterator.java b/src/main/java/lecture9/RangeIterator.java
new file mode 100644
index 0000000000000000000000000000000000000000..2be16b9f4a80ed336e62527f3ff4209134654eab
--- /dev/null
+++ b/src/main/java/lecture9/RangeIterator.java
@@ -0,0 +1,27 @@
+package lecture9;
+
+import java.util.Iterator;
+
+public class RangeIterator implements Iterator<Integer> {
+
+	int max;
+	int cur;
+	
+	public RangeIterator(int max) {
+		this.max=max;
+		int cur = 0;
+	}
+
+	@Override
+	public boolean hasNext() {
+		return cur<max;
+	}
+
+	@Override
+	public Integer next() {
+		int temp = cur;
+		cur++;
+		return temp;
+	}
+
+}