diff --git a/uk/ac/sanger/artemis/circular/digest/CircularGenomeController.java b/uk/ac/sanger/artemis/circular/digest/CircularGenomeController.java
index cf05244fabc4b73852c6326eb2a1039078d35a82..f7e854f25decaf52c4aef3b2a977a025d4e05a04 100644
--- a/uk/ac/sanger/artemis/circular/digest/CircularGenomeController.java
+++ b/uk/ac/sanger/artemis/circular/digest/CircularGenomeController.java
@@ -124,7 +124,7 @@ public class CircularGenomeController
 			final DNADraw dna = Utils.createDNADrawFromReportDetails(rd, entryGroup);
 
 	    final InSilicoGelPanel inSilicoGelPanel = 
-	    	new InSilicoGelPanel(rd.length, rd.cutSites, dna.getHeight());
+	    	new InSilicoGelPanel(rd.length, rd.cutSites, dna.getHeight(), output);
 	    
 			MouseMotionListener mouseMotionListener = new MouseMotionAdapter() 
 	    {
diff --git a/uk/ac/sanger/artemis/circular/digest/CutSite.java b/uk/ac/sanger/artemis/circular/digest/CutSite.java
index cc6c63618dd3611544990f505f943f7986842cfc..350a2e72558598b50f138c6296bbf774e1acaf96 100644
--- a/uk/ac/sanger/artemis/circular/digest/CutSite.java
+++ b/uk/ac/sanger/artemis/circular/digest/CutSite.java
@@ -20,6 +20,7 @@ package uk.ac.sanger.artemis.circular.digest;
 
 public class CutSite
 {
+	private String enzymeName;
 	private int fivePrime;
 	private int threePrime;
 	private int fivePrimeRev;
@@ -27,10 +28,12 @@ public class CutSite
 	private boolean forward = false;
   private boolean highlighted = false;
 
-	CutSite(String fivePrimeStr, String threePrimeStr,
+	CutSite(final String enzymeName,
+			    String fivePrimeStr, String threePrimeStr,
 			    String fivePrimeRevStr, String threePrimeRevStr,
 			    String strand)
 	{
+		this.enzymeName = enzymeName;
 		this.fivePrime  = Integer.parseInt(fivePrimeStr);
 		this.threePrime = Integer.parseInt(threePrimeStr);
 		if(!fivePrimeRevStr.equals("."))
@@ -76,4 +79,9 @@ public class CutSite
 	{
 		this.highlighted = highlighted;
 	}
+	
+	public String getEnzymeName()
+	{
+		return enzymeName;
+	}
 }
diff --git a/uk/ac/sanger/artemis/circular/digest/EmbossTableParser.java b/uk/ac/sanger/artemis/circular/digest/EmbossTableParser.java
index 4c02fd5633d12c13d3786cf0af919ee85aea71bc..6540ecc0a7cba14a23f45d0032db739c0f0a2e23 100644
--- a/uk/ac/sanger/artemis/circular/digest/EmbossTableParser.java
+++ b/uk/ac/sanger/artemis/circular/digest/EmbossTableParser.java
@@ -55,7 +55,8 @@ public class EmbossTableParser
 			if ("Start".equals(parts[0]))
 				continue;
 			
-			CutSite cutSite = new CutSite(parts[5], parts[6], parts[7], parts[8], parts[2]);
+			CutSite cutSite = new CutSite(
+					parts[3], parts[5], parts[6], parts[7], parts[8], parts[2]);
 			list.add(cutSite);
 		}
 		return list;
diff --git a/uk/ac/sanger/artemis/circular/digest/InSilicoGelPanel.java b/uk/ac/sanger/artemis/circular/digest/InSilicoGelPanel.java
index ad1f059824c258093877d6cb4f796a012535fd31..311e2c706858fa71bf1e404e22eddbb9d8f59620 100644
--- a/uk/ac/sanger/artemis/circular/digest/InSilicoGelPanel.java
+++ b/uk/ac/sanger/artemis/circular/digest/InSilicoGelPanel.java
@@ -28,14 +28,22 @@ import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
 import java.util.List;
 import java.util.Vector;
 
 import javax.swing.ButtonGroup;
+import javax.swing.JMenuItem;
 import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
 import javax.swing.JRadioButtonMenuItem;
 
+import uk.ac.sanger.artemis.components.FileViewer;
+
 public class InSilicoGelPanel extends JPanel
                               implements ActionListener
 {
@@ -48,13 +56,21 @@ public class InSilicoGelPanel extends JPanel
 	private int MIN_FRAGMENT_LENGTH = Integer.MAX_VALUE;
 	private boolean drawLog = false;
 	private JPopupMenu popup;
+	private File restrictOutput;
 
-
+  /**
+   * @param genomeLength
+   * @param cutSites
+   * @param panelHeight
+   * @param restrictOutput
+   */
 	public InSilicoGelPanel(final int genomeLength,
 			                    final List<CutSite> cutSites,
-			                    final int panelHeight)
+			                    final int panelHeight,
+			                    final File restrictOutput)
 	{
-		this.panelHeight  = panelHeight;
+		this.panelHeight    = panelHeight;
+		this.restrictOutput = restrictOutput;
 
 		setBackground(Color.white);
 		setPreferredSize(new Dimension(160,panelHeight));
@@ -70,7 +86,7 @@ public class InSilicoGelPanel extends JPanel
 			else
 			{
 				len = cutSite.getFivePrime()-lastSite;
-				System.out.println(i+" **** "+len.toString());
+				
 				FragmentBand band = new FragmentBand();
 				band.genomeFragmentLength = len;
 				band.bandCutSite = cutSite;
@@ -90,7 +106,7 @@ public class InSilicoGelPanel extends JPanel
 		genomeFragments.add(band);
 		if(len > MAX_FRAGMENT_LENGTH)
 			MAX_FRAGMENT_LENGTH = len;
-		System.out.println(len.toString());
+		//System.out.println(len.toString());
 		
 		MouseListener popupListener = new PopupListener();
 		addMouseListener(popupListener);
@@ -106,6 +122,10 @@ public class InSilicoGelPanel extends JPanel
     group.add(linearScale);
     group.add(logScale);
     linearScale.setSelected(true);
+    
+    JMenuItem showCutSites = new JMenuItem("Show cut site details");
+    popup.add(showCutSites);
+    showCutSites.addActionListener(this);
 	}
 	
 	/**
@@ -135,7 +155,7 @@ public class InSilicoGelPanel extends JPanel
 			else
 				y = gelHeight+marginHeight-(int)( ((float)(gelHeight)/
 						(float)(MAX_FRAGMENT_LENGTH-MIN_FRAGMENT_LENGTH)) * fragmentLength );
-		
+			
 			if(!genomeFragments.get(i).bandCutSite.isHighlighted())
 			{
 				g2D.setStroke(stroke);
@@ -143,11 +163,50 @@ public class InSilicoGelPanel extends JPanel
 			}
 			else
 			{
+				g2D.setColor(Color.black);
+				g2D.drawString(genomeFragments.get(i).bandCutSite.getEnzymeName(),
+	                     marginWidth+marginWidth+2, y);
 				g2D.setStroke(stroke2);
 				g2D.setColor(Color.yellow);
 			}
 			g2D.drawLine(marginWidth, y, marginWidth+marginWidth, y);
 		}
+		
+		drawScale(g2D, stroke,gelHeight);
+	}
+	
+	/**
+	 * Draw the fragment length scale
+	 * @param g2D
+	 * @param stroke
+	 * @param gelHeight
+	 */
+	private void drawScale(Graphics2D g2D, BasicStroke stroke, int gelHeight)
+	{
+		g2D.setColor(Color.black);
+		g2D.setStroke(stroke);
+		NumberFormat formatter = new DecimalFormat("#0.0");
+		
+		int nscale = 8;
+		if(isDrawLog())
+			nscale = 5;
+		
+  	float range = (MAX_FRAGMENT_LENGTH-MIN_FRAGMENT_LENGTH)/(float)nscale;
+	  for(int i=0;i<nscale+1; i++)
+		{
+			float length = MIN_FRAGMENT_LENGTH+(range*i);
+				
+			int y;
+			if(isDrawLog())
+				y = getLogValue((int)length, marginHeight, gelHeight);
+			else
+				y = gelHeight+marginHeight-(int)( ((float)(gelHeight)/
+		  		(float)(MAX_FRAGMENT_LENGTH-MIN_FRAGMENT_LENGTH)) * length );
+			
+			 g2D.drawLine(marginWidth, y, marginWidth-10, y);
+			 
+			 g2D.drawString(formatter.format(length/1000)+"kb",0,y); 
+		}
 	}
 	
   private static final double LOG10SCALE = 1.d/Math.log(10);
@@ -206,11 +265,34 @@ public class InSilicoGelPanel extends JPanel
 
 	public void actionPerformed(ActionEvent e)
 	{
-		JRadioButtonMenuItem radioButton = (JRadioButtonMenuItem)e.getSource();
-		if(radioButton.isSelected())
+		if (e.getSource() instanceof JRadioButtonMenuItem)
 		{
-			setDrawLog(radioButton.getText().startsWith("Log"));
-			repaint();
+			JRadioButtonMenuItem radioButton = (JRadioButtonMenuItem) e.getSource();
+			if (radioButton.isSelected())
+			{
+				setDrawLog(radioButton.getText().startsWith("Log"));
+				repaint();
+			}
+		}
+		else
+		{
+			final FileViewer viewer = new FileViewer(
+					restrictOutput.getName(), true, false);
+			BufferedReader br;
+			try
+			{
+				br = new BufferedReader(new FileReader(restrictOutput));
+
+				StringBuffer buff = new StringBuffer();
+				String line;
+				while ((line = br.readLine()) != null)
+					buff.append(line + "\n");
+				viewer.getTextPane().setText(buff.toString());
+			} 
+			catch (Exception e2)
+			{
+				e2.printStackTrace();
+			}
 		}
 	}
 }
\ No newline at end of file
diff --git a/uk/ac/sanger/artemis/circular/digest/Utils.java b/uk/ac/sanger/artemis/circular/digest/Utils.java
index 0740ee24c55d40fda310423b3e0fb845a97fbf68..fd19e72fd3b6c2ff2a9adc4d9c1f9dbdc5ce3cbd 100644
--- a/uk/ac/sanger/artemis/circular/digest/Utils.java
+++ b/uk/ac/sanger/artemis/circular/digest/Utils.java
@@ -140,10 +140,7 @@ public class Utils
 				counter++;
 				continue;
 			}
-			
-			//circularFeature = createFeature(lastCutPosFwd, cutSite.getEnd(), counter, sequenceLength);
-		  //dna.addFeatureToTrack(circularFeature, forward, false);
-			//System.out.println(lastCutPosFwd+".."+cutSite.getEnd()+"="+(cutSite.getEnd()-lastCutPosFwd));
+
 		  addFeature(lastCutPos, cutSite.getFivePrime(),
 					       counter, newEntry, dna, cutSite.isForward());
 			lastCutPos = cutSite.getFivePrime();
@@ -168,8 +165,17 @@ public class Utils
 		return dna;
 	}
 
+	/**
+	 * Add a new feature to the entry with the given coordinates
+	 * @param coord1
+	 * @param coord2
+	 * @param counter
+	 * @param newEntry
+	 * @param dna
+	 * @param isForward
+	 */
 	private static void addFeature(int coord1, int coord2,
-                          int counter, Entry newEntry, 
+                          int counter, Entry entry, 
                           DNADraw dna, boolean isForward)
 	{
 		String colour;
@@ -184,8 +190,7 @@ public class Utils
 		{
 			QualifierVector qualifiers = new QualifierVector();
 			qualifiers.add(new Qualifier("colour",colour));
-			final MarkerRange r;
-			
+			final MarkerRange r;		
 			
 			if(isForward)
 				qualifiers.add(new Qualifier("note","plus"));
@@ -200,18 +205,16 @@ public class Utils
 						dna.getArtemisEntryGroup().getSequenceEntry().getBases().getReverseStrand(),
 						coord1,coord2);*/
 			
-			int len = r.getCount();
+			//int len = r.getCount();
 
 			uk.ac.sanger.artemis.io.Feature f = new uk.ac.sanger.artemis.io.EmblStreamFeature(
 					new Key("misc_feature"),
 					r.createLocation(),
 					qualifiers);
-			newEntry.add(new uk.ac.sanger.artemis.Feature(f), false);
+			entry.add(new uk.ac.sanger.artemis.Feature(f), false);
 			
-			if(!isForward)
-			{
-				System.out.println(counter+" "+coord1+".."+coord2+"   "+f.getLocation().toStringShort());
-			}
+			//if(!isForward)
+			//	System.out.println(counter+" "+coord1+".."+coord2+"   "+f.getLocation().toStringShort());
 		}
 		catch (Exception e)
 		{