diff --git a/java/2-8-Transformation/BarExercise.java b/java/2-8-Transformation/BarExercise.java
index 89b1e8024d9fb6247515df64afc52d379639fa4b..16fc9d3e8199f413f0ef0a7e3d6902ce82a6d5b7 100644
--- a/java/2-8-Transformation/BarExercise.java
+++ b/java/2-8-Transformation/BarExercise.java
@@ -34,21 +34,17 @@ public class BarExercise {
 
 class Canvas extends JComponent {
 
-	// the house shape (model position is centred at top left corner)
-	private Polygon shape = new Polygon(new int[] { -50, 50,  50, 	0, -50}, 
-										new int[] { 75,  75, -25, -75, -25}, 5);
-
 	int step = 0;
 
 	Canvas() {
 
 		// only mouse clicked events
 		addMouseListener(new MouseAdapter() { 
-	          public void mouseClicked(MouseEvent me) { 
+            public void mouseClicked(MouseEvent me) { 
 	          	step ++;
 	        	repaint();
-	          } 
-	        }); 
+            } 
+        }); 
 	}
     
     // custom graphics drawing 
@@ -68,11 +64,12 @@ class Canvas extends JComponent {
     	// save the current transform matrix 
     	AffineTransform M = g2.getTransform();    	
 
-    	// the shape will get transformed into "world" coordinates
+    	// transfrom at one time
     	if (true) {
     		g2.translate(50, 100);
 	    	g2.rotate(Math.toRadians(30));
 	    	g2.translate(-50, -100);
+
 	    	g2.setColor(Color.BLUE.darker());
 	    	drawBar(g2, 50, 100, 150, 100);	
 
@@ -82,23 +79,23 @@ class Canvas extends JComponent {
     		switch (step % 4) {
 
     		case 1:
-    		g2.translate(-50, -100);
-	    	drawBar(g2, 50, 100, 150, 100); 
-	    	g2.setTransform(M);
-	    	break;
+        		g2.translate(-50, -100);
+    	    	drawBar(g2, 50, 100, 150, 100); 
+    	    	g2.setTransform(M);
+    	    	break;
     		case 2:
-	    	g2.rotate(Math.toRadians(30));
-	    	g2.translate(-50, -100);
-	    	drawBar(g2, 50, 100, 150, 100);
-	    	g2.setTransform(M);
-	    	break;
+    	    	g2.rotate(Math.toRadians(30));
+    	    	g2.translate(-50, -100);
+    	    	drawBar(g2, 50, 100, 150, 100);
+    	    	g2.setTransform(M);
+    	    	break;
     		case 3:
-	    	g2.translate(50, 100);
-	    	g2.rotate(Math.toRadians(30));
-	    	g2.translate(-50, -100);
-	    	drawBar(g2, 50, 100, 150, 100);	
-	    	g2.setTransform(M);
-	    	break;
+    	    	g2.translate(50, 100);
+    	    	g2.rotate(Math.toRadians(30));
+    	    	g2.translate(-50, -100);
+    	    	drawBar(g2, 50, 100, 150, 100);	
+    	    	g2.setTransform(M);
+    	    	break;
     		}
     	} 
     }
diff --git a/java/2-8-Transformation/Transform2.java b/java/2-8-Transformation/Transform2.java
index ba650cf01eef889052a85f8493fde2cd9403ce3a..f0ed75a7e88dac0cf064d159925cd9c2540e2370 100644
--- a/java/2-8-Transformation/Transform2.java
+++ b/java/2-8-Transformation/Transform2.java
@@ -54,7 +54,7 @@ class Canvas extends JComponent {
     	
     	// the shape will get transformed when rendered
 		g2.translate(M.x, M.y);
-		g2.rotate(45);
+		g2.rotate(Math.toRadians(45));
 		g2.scale(2, 1);
 
      	g2.setStroke(new BasicStroke(3)); 
diff --git a/java/2-8-Transformation/shapemodel/Shape.java b/java/2-8-Transformation/shapemodel/Shape.java
index 716741f9d9f9c2cd2f4aaac3b956e7af8c59321b..07701ea55ca2ba970b7c36b51554635c90f7de60 100644
--- a/java/2-8-Transformation/shapemodel/Shape.java
+++ b/java/2-8-Transformation/shapemodel/Shape.java
@@ -27,6 +27,7 @@ class Shape {
 
     // add a point to end of shape
     public void addPoint(double x, double y) {
+        if (points == null) clearPoints();
         addPoint(new Point2d(x, y));  
     }
 
@@ -78,9 +79,16 @@ class Shape {
 
     // shape's transform
 
-    // quick hack, get and set would be better
     float scale = 1.0f;
 
+    public float getScale(){
+        return scale;
+    }
+
+    public void setScale(float scale){
+        this.scale = scale;
+    }
+
     // some optimization to cache points for drawing
     Boolean pointsChanged = false; // dirty bit
     int[] xpoints, ypoints;
@@ -129,7 +137,7 @@ class Shape {
         }
 
         // reset the transform to what it was before we drew the shape
-        g2.setTransform(M);            
+//        g2.setTransform(M);            
     }
     
    
diff --git a/java/2-8-Transformation/shapemodel/ShapeDemo.java b/java/2-8-Transformation/shapemodel/ShapeDemo.java
index eb1ebc19f366bc7b2e1195b5ecb8e4d76987a842..42829c0466b367a26537bc8aa45859426cd1da7d 100644
--- a/java/2-8-Transformation/shapemodel/ShapeDemo.java
+++ b/java/2-8-Transformation/shapemodel/ShapeDemo.java
@@ -23,12 +23,12 @@ public class ShapeDemo extends JPanel {
 
                 shape = new Shape();
                 // change shape type
-                // shape.setIsClosed(true);
-                // shape.setIsFilled(true);
+//                shape.setIsClosed(true);
+//                shape.setIsFilled(true);
                 shape.setColour(Color.BLUE);
 
                 // try setting scale to something other than 1 
-                shape.scale = 1.0f;
+                shape.setScale(1.0f);
 
                 repaint();
             }
@@ -57,7 +57,7 @@ public class ShapeDemo extends JPanel {
         Graphics2D g2 = (Graphics2D) g; // cast to get 2D drawing methods
         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,  // antialiasing look nicer
                             RenderingHints.VALUE_ANTIALIAS_ON);
- 
+
         if (shape != null)
             shape.draw(g2);
     }