diff --git a/Cribbage/cribbage.log b/Cribbage/cribbage.log
new file mode 100644
index 0000000000000000000000000000000000000000..9c8820efcf7e505da73e32b9ae4615520f98595a
--- /dev/null
+++ b/Cribbage/cribbage.log
@@ -0,0 +1,8 @@
+seed,55510
+cribbage.RandomPlayer,P0
+cribbage.RandomPlayer,P1
+deal,P0,[2C,2H,7C,QC,QD,KH]
+deal,P1,[AD,AH,TD,JS,QH,KC]
+discard,P0,[2C,QC]
+discard,P1,[JS,KC]
+starter,8H
diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage$1.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage$1.class
index b636d7c25768c7e14e9facd6fddfbb332c9f861f..a147958a39f3d8d4f821a8a9067d4cd3a3a31377 100644
Binary files a/Cribbage/out/production/Cribbage/cribbage/Cribbage$1.class and b/Cribbage/out/production/Cribbage/cribbage/Cribbage$1.class differ
diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage$MyCardValues.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage$MyCardValues.class
index 7f88f19f23e274ea9f17e6786740ec458e7e9fe9..fd620cdab36aae8688b2641dad70484ff1e0caa1 100644
Binary files a/Cribbage/out/production/Cribbage/cribbage/Cribbage$MyCardValues.class and b/Cribbage/out/production/Cribbage/cribbage/Cribbage$MyCardValues.class differ
diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage$Rank.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Rank.class
index 16191b6bcfbdc9d188c27062d7e8b7ff8834c356..9b0414c05acf17d1611d7f441ef9cd299f7afef0 100644
Binary files a/Cribbage/out/production/Cribbage/cribbage/Cribbage$Rank.class and b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Rank.class differ
diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage$Segment.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Segment.class
index c29a01eb38b299c3fdb4558b0fcae0c623362058..15eaecc4b144ba1962aff3b0f0d9eb0db13d2b88 100644
Binary files a/Cribbage/out/production/Cribbage/cribbage/Cribbage$Segment.class and b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Segment.class differ
diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage$Suit.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Suit.class
index 0feeb133f36e5eb1aad4401e9c03d61c2ce33e29..e6a85e089e9a8805170c3ac5f5cb24ea0c0b61f3 100644
Binary files a/Cribbage/out/production/Cribbage/cribbage/Cribbage$Suit.class and b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Suit.class differ
diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage.class
index 4e8c9da01b16425c21278d4f249537f8e8c10bda..e2ceda0a8d6876c7363284db3c0881cf5e589609 100644
Binary files a/Cribbage/out/production/Cribbage/cribbage/Cribbage.class and b/Cribbage/out/production/Cribbage/cribbage/Cribbage.class differ
diff --git a/Cribbage/out/production/Cribbage/cribbage/LogGenerator.class b/Cribbage/out/production/Cribbage/cribbage/LogGenerator.class
new file mode 100644
index 0000000000000000000000000000000000000000..cc7d45b71d7f8103957aa6174f635d01805be96e
Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/LogGenerator.class differ
diff --git a/Cribbage/src/cribbage/Cribbage.java b/Cribbage/src/cribbage/Cribbage.java
index 5fb110551072fa0705466c6d8d4ad3b9412cd7ba..874ec0d1a717e9ff24e2a0ffa58a6e7d6a8966aa 100644
--- a/Cribbage/src/cribbage/Cribbage.java
+++ b/Cribbage/src/cribbage/Cribbage.java
@@ -8,8 +8,7 @@ import observer.*;
 
 import java.awt.Color;
 import java.awt.Font;
-import java.io.FileReader;
-import java.io.IOException;
+import java.io.*;
 import java.lang.reflect.InvocationTargetException;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -135,6 +134,9 @@ public class Cribbage extends CardGame {
 static private final IPlayer[] players = new IPlayer[nPlayers];
 private final int[] scores = new int[nPlayers];
 
+static private final LogGenerator logGenerator = new LogGenerator();
+private final String[] playerName = {"P0", "P1"};
+
 final Font normalFont = new Font("Serif", Font.BOLD, 24);
 final Font bigFont = new Font("Serif", Font.BOLD, 36);
 
@@ -175,6 +177,9 @@ private void deal(Hand pack, Hand[] hands) {
 		hands[i].sort(Hand.SortType.POINTPRIORITY, true);
 	}
 	layouts[0].setStepDelay(0);
+	//log
+	logGenerator.writeLog("deal,P0," + canonical(players[0].hand));
+	logGenerator.writeLog("deal,P1," + canonical(players[1].hand));
 }
 
 private void discardToCrib() {
@@ -184,11 +189,18 @@ private void discardToCrib() {
 	crib.setView(this, layout);
 	// crib.setTargetArea(cribTarget);
 	crib.draw();
+	Hand dPlayer = new Hand(deck); //discarded cards.
 	for (IPlayer player: players) {
 		for (int i = 0; i < nDiscards; i++) {
 			transfer(player.discard(), crib);
 		}
+		dPlayer.insert(crib.get(crib.getNumberOfCards()-1), false);
+		dPlayer.insert(crib.get(crib.getNumberOfCards()-2), false);
+		dPlayer.sort(Hand.SortType.POINTPRIORITY, false);
 		crib.sort(Hand.SortType.POINTPRIORITY, true);
+		//log
+		logGenerator.writeLog("discard," + playerName[player.id] + "," + canonical(dPlayer));
+		dPlayer.removeAll(false);
 	}
 }
 
@@ -200,6 +212,7 @@ private void starter(Hand pack) {
 	starter.draw();
 	Card dealt = randomCard(pack);
 	dealt.setVerso(false);
+	logGenerator.writeLog("starter," + canonical(dealt));
 	transfer(dealt, starter);
 }
 
@@ -308,7 +321,7 @@ void modifySubject(HandCards playersHandCards){
 	playersHandCards.addRule(fifteens);
 	playersHandCards.addRule(runs);
 	playersHandCards.addRule(pairs);
-	//playersHandCards.addRule(flush);
+	playersHandCards.addRule(flush);
 	playersHandCards.addRule(jack);
 }
 
@@ -381,6 +394,12 @@ public Cribbage()
 	  players[1] = (IPlayer) clazz.getConstructor().newInstance();
 	  // End properties
 
+	  //log
+	  logGenerator.generateLogFile();
+	  logGenerator.writeLog("seed," + SEED);
+	  logGenerator.writeLog(cribbageProperties.getProperty("Player0") + ",P0");
+	  logGenerator.writeLog(cribbageProperties.getProperty("Player1") + ",P1");
+
 	  new Cribbage();
   }
 
diff --git a/Cribbage/src/cribbage/LogGenerator.java b/Cribbage/src/cribbage/LogGenerator.java
new file mode 100644
index 0000000000000000000000000000000000000000..be03ef43f6d99cf66385d996afedc3416bbe5586
--- /dev/null
+++ b/Cribbage/src/cribbage/LogGenerator.java
@@ -0,0 +1,32 @@
+package cribbage;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+public class LogGenerator {
+
+    String pathName = "cribbage.log";
+
+    public void generateLogFile(){
+        try {
+            File file = new File(pathName);
+            if (file.exists()){
+                file.delete();
+            } else {
+                file.createNewFile();
+            }
+        }catch (Exception e){e.printStackTrace();}
+    }
+
+    public void writeLog(String str){
+        try {
+            FileWriter fileWriter = new FileWriter(pathName, true);
+            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
+            bufferedWriter.write(str);
+            bufferedWriter.newLine();
+            bufferedWriter.close();
+        }catch (IOException e){e.printStackTrace();}
+    }
+}