diff --git a/host/lib/pack_firmware.py b/host/lib/pack_firmware.py
index 0cb7196..91faad0 100644
--- a/host/lib/pack_firmware.py
+++ b/host/lib/pack_firmware.py
@@ -316,8 +316,7 @@
         self.compress = None
 
   def GetData(self):
-    return self.pack.tools.ReadFileAndConcat(
-        self.value, self.compress, len(self.value) > 1)[0]
+    return self.pack.tools.ReadFileAndConcat(self.value, self.compress)[0]
 
 
 class EntryKeyBlock(EntryFmapArea):
@@ -345,8 +344,7 @@
       prefix = self.pack.props['keydir'] + '/'
 
       # Join up the data files to be signed
-      data = self.pack.tools.ReadFileAndConcat(
-        self.value, self.compress, len(self.value) > 1)[0]
+      data = self.pack.tools.ReadFileAndConcat(self.value, self.compress)[0]
       tools.WriteFile(input_data, data)
       args = [
           '--vblock', self.path,
@@ -735,8 +733,7 @@
 
     Returns:
       Tuple:
-        Contents of the files (as a string), optionally with an index
-          prepended (see ReadFileAndConcat for details)
+        Contents of the files (as a string)
         Directory of the position of the contents, as a dictionary:
           key: Name of the property
           value: List containing:
@@ -744,9 +741,7 @@
             size of this property's data
     """
     filenames = [self.props[prop] for prop in prop_list]
-    with_index = len(filenames) > 1
-    data, offset, length = \
-        self.tools.ReadFileAndConcat(filenames, with_index=with_index)
+    data, offset, length = self.tools.ReadFileAndConcat(filenames)
     directory = {}
     for i in xrange(len(prop_list)):
       directory[prop_list[i]] = [offset[i], length[i]]
diff --git a/host/lib/tools.py b/host/lib/tools.py
index 3a80302..1a5047e 100755
--- a/host/lib/tools.py
+++ b/host/lib/tools.py
@@ -21,7 +21,6 @@
 import os
 import re
 import shutil
-import struct
 import sys
 import tempfile
 import unittest
@@ -226,12 +225,11 @@
     fd.write(data)
     fd.close()
 
-  def ReadFileAndConcat(self, filenames, compress=None, with_index=False):
+  def ReadFileAndConcat(self, filenames, compress=None):
     """Read several files and concat them.
 
     Args:
       filenames: a list containing name of the files to read.
-      with_index: If true, an index structure is prepended to the data.
 
     Returns:
       A tuple of a string and two list. The string is the concated data read
@@ -239,28 +237,16 @@
         first list contains the offset of each file in the data string and
         the second one contains the actual (non-padded) length of each file,
         both in the same order.
-
-        The optional index structure is a 32 bit integer set to the number of
-        entries in the index, followed by that many pairs of integers which
-        describe the offset and length of each chunk.
     """
     data = ''
-    offsets = []
-    lengths = []
+    offset = []
+    length = []
     for fname in filenames:
-      offsets.append(len(data))
+      offset.append(len(data))
       content = self.ReadFile(fname)
       pad_len = ((len(content) + 3) & ~3) - len(content)
       data += content + chr(0xff) * pad_len
-      lengths.append(len(content))
-
-    if with_index:
-      index_size = 4 + len(filenames) * 8
-      index = struct.pack("<I", len(filenames))
-      offsets = tuple(offset + index_size for offset in offsets)
-      for filename, offset, length in zip(filenames, offsets, lengths):
-        index += struct.pack("<II", offset, length)
-      data = index + data
+      length.append(len(content))
 
     if compress:
       if compress == 'lzo':
@@ -275,7 +261,7 @@
         data = self.ReadFile(outname)
       else:
         raise ValueError("Unknown compression method '%s'" % compress)
-    return data, offsets, lengths
+    return data, offset, length
 
   def GetChromeosVersion(self):
     """Returns the ChromeOS version string.
