diff --git a/uk/ac/sanger/artemis/components/variant/VCFRecord.java b/uk/ac/sanger/artemis/components/variant/VCFRecord.java
index 38af5972caad1d125499f14f38df3d3bed747fa6..7a05c30d2464aff9d8f0773928119daa3b9e3b96 100644
--- a/uk/ac/sanger/artemis/components/variant/VCFRecord.java
+++ b/uk/ac/sanger/artemis/components/variant/VCFRecord.java
@@ -42,6 +42,7 @@ class VCFRecord
   private float quality;
   private String filter;
   private String info;
+  private String infos[];
   private String format;
   private String data[][];
   private short synFlag = -1;
@@ -111,10 +112,11 @@ class VCFRecord
    */
   protected String getInfoValue(String key)
   {
-    String parts[] = SEMICOLON_PATTERN.split(info);
-    for(int i=0; i<parts.length; i++)
-      if(parts[i].startsWith(key+"="))
-        return parts[i].substring(key.length()+1);
+    if(infos == null)
+      infos = SEMICOLON_PATTERN.split(info);
+    for(int i=0; i<infos.length; i++)
+      if(infos[i].startsWith(key+"="))
+        return infos[i].substring(key.length()+1);
     return null;
   }