diff --git a/uk/ac/sanger/artemis/circular/digest/CircularGenomeController.java b/uk/ac/sanger/artemis/circular/digest/CircularGenomeController.java
index 7be4a0034fb7d26685e9785f52e6930865791dfc..8171a2e54f39fc51e8fc00818f2cfcfd32162066 100644
--- a/uk/ac/sanger/artemis/circular/digest/CircularGenomeController.java
+++ b/uk/ac/sanger/artemis/circular/digest/CircularGenomeController.java
@@ -86,8 +86,14 @@ public class CircularGenomeController
   /**
    * Create in-silico Pulse Field Gel Electrophoresis from a restriction enzyme
    * digest and draw alongside DNAPlotter
+   * @param enzymes
+   * @param sequenceFiles
+   * @param restrictOutputs
+   * @throws Exception
    */
-  protected void setup(String enzymes, List<File> sequenceFiles)
+  protected void setup(String enzymes, 
+                       List<File> sequenceFiles,
+                       List<File> restrictOutputs)
       throws Exception
   {
     // add each sequence file to a different entry group
@@ -114,14 +120,18 @@ public class CircularGenomeController
       enzymes = promptForEnzymes();
 
     // run restrict
-    List<File> restrictOutputs = new Vector<File>(sequenceFiles.size());
-    for (int i = 0; i < sequenceFiles.size(); i++)
+    if(restrictOutputs == null)
     {
-      File sequenceFile = sequenceFiles.get(i);
-      File restrictOutput = File.createTempFile("restrict_"
-          + sequenceFile.getName(), ".txt");
-      restrictOutputs.add(restrictOutput);
-      runEmbossRestrict(sequenceFile.getAbsolutePath(), enzymes, restrictOutput);
+      restrictOutputs = new Vector<File>(sequenceFiles.size());
+      for (int i = 0; i < sequenceFiles.size(); i++)
+      {
+        File sequenceFile = sequenceFiles.get(i);
+        File restrictOutput = File.createTempFile("restrict_"
+            + sequenceFile.getName(), ".txt");
+        restrictOutputs.add(restrictOutput);
+        runEmbossRestrict(sequenceFile.getAbsolutePath(), enzymes,
+            restrictOutput);
+      }
     }
     drawResults(restrictOutputs, entries, sequenceFiles, enzymes);
   }
@@ -578,10 +588,21 @@ public class CircularGenomeController
     try
     {
       List<File> fileNames = null;
+      List<File> restrictOutputs = null;
       if (args != null && args.length > 0)
       {
         if (args.length == 1)
         {
+          if(args[0].startsWith("-h"))
+          {
+            System.out.println("-h\t\tshow help");
+            System.out.println("-enz\t\tcomma separated list of digest enzymes (optional)");
+            System.out.println("-seq\t\tspace separated list of sequences (optional)");
+            System.out.println(
+                "-restrict\tspace separated lists of EMBOSS restrict output "+
+                "in the same order as the sequences (optional).");
+            System.exit(0); 
+          }
           fileNames = new Vector<File>();
           fileNames.add(new File(args[0]));
         }
@@ -594,11 +615,29 @@ public class CircularGenomeController
           {
             if (fileNames == null)
               fileNames = new Vector<File>();
-            fileNames.add(new File(args[i + 1]));
+            
+            for(int j = i + 1; j < args.length; j++)
+            {
+              if(args[j].startsWith("-"))
+                break;
+              fileNames.add(new File(args[j]));
+            }
+          }
+          else if (args[i].startsWith("-restrict"))
+          {
+            if (restrictOutputs == null)
+              restrictOutputs = new Vector<File>();
+            
+            for(int j = i + 1; j < args.length; j++)
+            {
+              if(args[j].startsWith("-"))
+                break;
+              restrictOutputs.add(new File(args[j]));
+            }
           }
         }
       }
-      controller.setup(enzymes, fileNames);
+      controller.setup(enzymes, fileNames, restrictOutputs);
     }
     catch (Exception e)
     {