diff --git a/tsk/fs/yaffs.cpp b/tsk/fs/yaffs.cpp
index 6756b0cc9461e63a5663d531cc8dc01965058a5e..ae61a2976eb582aa4e2f50962afe3f7db1132310 100644
--- a/tsk/fs/yaffs.cpp
+++ b/tsk/fs/yaffs.cpp
@@ -728,25 +728,22 @@ static void
  */
 static YAFFS_CONFIG_STATUS
 yaffs_load_config_file(TSK_IMG_INFO * a_img_info, std::map<std::string, std::string> & results){
-    const TSK_TCHAR ** image_names;
-    int num_imgs;
     size_t config_file_name_len;
     TSK_TCHAR * config_file_name;
     FILE* config_file;
     char buf[1001];
 
-    // Get the image name(s)
-    image_names = tsk_img_get_names(a_img_info, &num_imgs);
-    if(num_imgs < 1){
+    // Ensure there is at least one image name
+    if(a_img_info->num_img < 1){
         return YAFFS_CONFIG_ERROR;
     }
 
     // Construct the name of the config file from the first image name
-    config_file_name_len = TSTRLEN(image_names[0]);
+    config_file_name_len = TSTRLEN(a_img_info->images[0]);
     config_file_name_len += TSTRLEN(YAFFS_CONFIG_FILE_SUFFIX);
     config_file_name = (TSK_TCHAR *) tsk_malloc(sizeof(TSK_TCHAR) * (config_file_name_len + 1));
 
-    TSTRNCPY(config_file_name, image_names[0], TSTRLEN(image_names[0]) + 1);
+    TSTRNCPY(config_file_name, a_img_info->images[0], TSTRLEN(a_img_info->images[0]) + 1);
     TSTRNCAT(config_file_name, YAFFS_CONFIG_FILE_SUFFIX, TSTRLEN(YAFFS_CONFIG_FILE_SUFFIX) + 1);
 
 #ifdef TSK_WIN32
diff --git a/tsk/img/aff.c b/tsk/img/aff.c
index de6518d2a94cf3d5c12487d88d65b1faf2621042..fd9c4ff3c72358b8bb9e1d6abd639afac00ba3bd 100644
--- a/tsk/img/aff.c
+++ b/tsk/img/aff.c
@@ -216,6 +216,11 @@ aff_close(TSK_IMG_INFO * img_info)
 {
     IMG_AFF_INFO *aff_info = (IMG_AFF_INFO *) img_info;
     af_close(aff_info->af_file);
+	for (int i = 0; i < img_info->num_img; i++) {
+		if (img_info->images[i])
+			free(img_info->images[i]);
+	}
+	free(img_info->images);
     tsk_img_free(aff_info);
 }
 
@@ -284,6 +289,25 @@ aff_open(const TSK_TCHAR * const images[], unsigned int a_ssize)
     img_info->close = aff_close;
     img_info->imgstat = aff_imgstat;
 
+    // Save the image path in TSK_IMG_INFO - this is mostly for consistency with the other
+    // image types and is not currently used
+    img_info->num_img = 1;
+    img_info->images =
+        (TSK_TCHAR **)tsk_malloc(sizeof(TSK_TCHAR *) * img_info->num_img);
+    if (img_info->images == NULL) {
+        free(image);
+        return NULL;
+    }
+    size_t len = TSTRLEN(images[0]);
+    img_info->images[0] =
+        (TSK_TCHAR *)tsk_malloc(sizeof(TSK_TCHAR) * (len + 1));
+    if (img_info->images[0] == NULL) {
+        free(img_info->images);
+        free(image);
+        return NULL;
+    }
+    TSTRNCPY(img_info->images[0], images[0], len + 1);
+
     img_info->sector_size = 512;
     if (a_ssize)
         img_info->sector_size = a_ssize;
diff --git a/tsk/img/ewf.c b/tsk/img/ewf.c
index 0445db6f34db197ab61cf92c4b3874f2f5479ffd..24e83cf2b187fa047ba8d20f57c1e26fcc893a06 100644
--- a/tsk/img/ewf.c
+++ b/tsk/img/ewf.c
@@ -131,15 +131,15 @@ ewf_image_close(TSK_IMG_INFO * img_info)
     // not clear from the docs what we should do in v1...
     // @@@ Probably a memory leak in v1 unless libewf_close deals with it
     if (ewf_info->used_ewf_glob == 0) {
-        for (i = 0; i < ewf_info->num_imgs; i++) {
-            free(ewf_info->images[i]);
+        for (i = 0; i < ewf_info->img_info.num_img; i++) {
+            free(ewf_info->img_info.images[i]);
         }
-        free(ewf_info->images);
+        free(ewf_info->img_info.images);
     }
     else {
         libewf_error_t *error;
 #ifdef TSK_WIN32
-        libewf_glob_wide_free( ewf_info->images, ewf_info->num_imgs, &error);
+        libewf_glob_wide_free( ewf_info->img_info.images, ewf_info->img_info.num_img, &error);
 #else
         libewf_glob_free( ewf_info->images, ewf_info->num_imgs, &error);
 #endif
@@ -229,8 +229,8 @@ ewf_open(int a_num_img,
 #if defined( HAVE_LIBEWF_V2_API)
 #ifdef TSK_WIN32
         is_error = (libewf_glob_wide(a_images[0], TSTRLEN(a_images[0]),
-                LIBEWF_FORMAT_UNKNOWN, &ewf_info->images,
-                &ewf_info->num_imgs, &ewf_error) == -1);
+                LIBEWF_FORMAT_UNKNOWN, &ewf_info->img_info.images,
+                &ewf_info->img_info.num_img, &ewf_error) == -1);
 #else
         is_error = (libewf_glob(a_images[0], TSTRLEN(a_images[0]),
                 LIBEWF_FORMAT_UNKNOWN, &ewf_info->images,
@@ -273,25 +273,25 @@ ewf_open(int a_num_img,
         if (tsk_verbose)
             tsk_fprintf(stderr,
                 "ewf_open: found %d segment files via libewf_glob\n",
-                ewf_info->num_imgs);
+                ewf_info->img_info.num_img);
     }
     else {
         int i;
-        ewf_info->num_imgs = a_num_img;
-        if ((ewf_info->images =
+        ewf_info->img_info.num_img = a_num_img;
+        if ((ewf_info->img_info.images =
                 (TSK_TCHAR **) tsk_malloc(a_num_img *
                     sizeof(TSK_TCHAR *))) == NULL) {
             tsk_img_free(ewf_info);
             return NULL;
         }
         for (i = 0; i < a_num_img; i++) {
-            if ((ewf_info->images[i] =
+            if ((ewf_info->img_info.images[i] =
                     (TSK_TCHAR *) tsk_malloc((TSTRLEN(a_images[i]) +
                             1) * sizeof(TSK_TCHAR))) == NULL) {
                 tsk_img_free(ewf_info);
                 return NULL;
             }
-            TSTRNCPY(ewf_info->images[i], a_images[i],
+            TSTRNCPY(ewf_info->img_info.images[i], a_images[i],
                 TSTRLEN(a_images[i]) + 1);
         }
     }
@@ -341,8 +341,8 @@ ewf_open(int a_num_img,
     }
 #if defined( TSK_WIN32 )
     is_error = (libewf_handle_open_wide(ewf_info->handle,
-            (wchar_t * const *) ewf_info->images,
-            ewf_info->num_imgs, LIBEWF_OPEN_READ, &ewf_error) != 1);
+            (wchar_t * const *) ewf_info->img_info.images,
+            ewf_info->img_info.num_img, LIBEWF_OPEN_READ, &ewf_error) != 1);
 #else
     is_error = (libewf_handle_open(ewf_info->handle,
             (char *const *) ewf_info->images,
diff --git a/tsk/img/ewf.h b/tsk/img/ewf.h
index 15b979354cf88d3207f4755f0721ec45208c5a83..08752e14e1e91ce04f858ae092695a084c8d284d 100644
--- a/tsk/img/ewf.h
+++ b/tsk/img/ewf.h
@@ -38,8 +38,6 @@ extern "C" {
         libewf_handle_t *handle;
         char md5hash[33];
         int md5hash_isset;
-        TSK_TCHAR **images;
-        int num_imgs;
         uint8_t used_ewf_glob;  // 1 if libewf_glob was used during open
         tsk_lock_t read_lock;   ///< Lock for reads since libewf is not thread safe -- only works if you have a single instance of EWF_INFO for all threads.
     } IMG_EWF_INFO;
diff --git a/tsk/img/img_open.c b/tsk/img/img_open.c
index 60d27a6481c002f1005981ce3472b273280668e7..c38f9182bd126c729407787225993f4b03edf740 100644
--- a/tsk/img/img_open.c
+++ b/tsk/img/img_open.c
@@ -557,52 +557,3 @@ tsk_img_close(TSK_IMG_INFO * a_img_info)
     tsk_deinit_lock(&(a_img_info->cache_lock));
     a_img_info->close(a_img_info);
 }
-
-
-/**
- * \internal
- * Return the list of names for this open images. 
- * This is sort of a hack implementation and is internal only at this
- * point.  Returns pointers into the IMG_INFO structs and should not be
- * modified or freed.
- * @param a_img_info Image to pull names from
- * @param a_num_imgs Will contain number of elements in the return array.
- * @returns List of names.
- */
-const TSK_TCHAR **
-tsk_img_get_names(TSK_IMG_INFO *a_img_info, int *a_num_imgs) 
-{
-    if (a_img_info == NULL) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_IMG_ARG);
-        tsk_error_set_errstr("tsk_img_get_names: IMG_INFO is NULL");
-        return NULL;
-    }
-    if (a_num_imgs == NULL) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_IMG_ARG);
-        tsk_error_set_errstr("tsk_img_get_names: a_num_imgs is NULL");
-        return NULL;
-    }
-    *a_num_imgs = 0;
-
-    switch (a_img_info->itype) {
-        case TSK_IMG_TYPE_RAW:
-            {
-                IMG_RAW_INFO *raw_info = (IMG_RAW_INFO *)a_img_info;
-                *a_num_imgs = raw_info->num_img;
-                return raw_info->images;
-            }
-#if HAVE_LIBEWF
-        case TSK_IMG_TYPE_EWF_EWF:
-            {
-                IMG_EWF_INFO *ewf_info = (IMG_EWF_INFO *)a_img_info;
-                *a_num_imgs = ewf_info->num_imgs;
-                return ewf_info->images;
-            }
-            break;
-#endif
-        default:
-            return NULL;
-    }
-}
diff --git a/tsk/img/raw.c b/tsk/img/raw.c
index a55e8f2d3194d9882b5693d106e5225ed702afdb..5341d9b95c1a1fc546136b576d6391b334e2917c 100644
--- a/tsk/img/raw.c
+++ b/tsk/img/raw.c
@@ -51,7 +51,7 @@ raw_read_segment(IMG_RAW_INFO * raw_info, int idx, char *buf,
         if (tsk_verbose) {
             tsk_fprintf(stderr,
                 "raw_read_segment: opening file into slot %d: %" PRIttocTSK
-                "\n", raw_info->next_slot, raw_info->images[idx]);
+                "\n", raw_info->next_slot, raw_info->img_info.images[idx]);
         }
 
         /* Grab the next cache slot */
@@ -62,7 +62,7 @@ raw_read_segment(IMG_RAW_INFO * raw_info, int idx, char *buf,
             if (tsk_verbose) {
                 tsk_fprintf(stderr,
                     "raw_read_segment: closing file %" PRIttocTSK "\n",
-                    raw_info->images[cimg->image]);
+                    raw_info->img_info.images[cimg->image]);
             }
 #ifdef TSK_WIN32
             CloseHandle(cimg->fd);
@@ -73,7 +73,7 @@ raw_read_segment(IMG_RAW_INFO * raw_info, int idx, char *buf,
         }
 
 #ifdef TSK_WIN32
-        cimg->fd = CreateFile(raw_info->images[idx], FILE_READ_DATA,
+        cimg->fd = CreateFile(raw_info->img_info.images[idx], FILE_READ_DATA,
                               FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0,
                               NULL);
         if ( cimg->fd == INVALID_HANDLE_VALUE ) {
@@ -82,7 +82,7 @@ raw_read_segment(IMG_RAW_INFO * raw_info, int idx, char *buf,
             tsk_error_reset();
             tsk_error_set_errno(TSK_ERR_IMG_OPEN);
             tsk_error_set_errstr("raw_read: file \"%" PRIttocTSK
-                                "\" - %d", raw_info->images[idx], lastError);
+                                "\" - %d", raw_info->img_info.images[idx], lastError);
             return -1;
         }
 
@@ -126,7 +126,7 @@ raw_read_segment(IMG_RAW_INFO * raw_info, int idx, char *buf,
                 tsk_error_set_errno(TSK_ERR_IMG_SEEK);
                 tsk_error_set_errstr("raw_read: file \"%" PRIttocTSK
                     "\" offset %" PRIuOFF " seek - %d",
-                    raw_info->images[idx], rel_offset,
+                    raw_info->img_info.images[idx], rel_offset,
                     lastError);
                 return -1;
             }
@@ -145,7 +145,7 @@ raw_read_segment(IMG_RAW_INFO * raw_info, int idx, char *buf,
             tsk_error_set_errno(TSK_ERR_IMG_READ);
             tsk_error_set_errstr("raw_read: file \"%" PRIttocTSK
                 "\" offset: %" PRIuOFF " read len: %" PRIuSIZE " - %d",
-                raw_info->images[idx], rel_offset, len,
+                raw_info->img_info.images[idx], rel_offset, len,
                 lastError);
             return -1;
         }
@@ -215,7 +215,7 @@ raw_read(TSK_IMG_INFO * img_info, TSK_OFF_T offset, char *buf, size_t len)
     }
 
     // Find the location of the offset
-    for (i = 0; i < raw_info->num_img; i++) {
+    for (i = 0; i < raw_info->img_info.num_img; i++) {
 
         /* Does the data start in this image? */
         if (offset < raw_info->max_off[i]) {
@@ -322,15 +322,15 @@ raw_imgstat(TSK_IMG_INFO * img_info, FILE * hFile)
     tsk_fprintf(hFile, "Image Type: raw\n");
     tsk_fprintf(hFile, "\nSize in bytes: %" PRIuOFF "\n", img_info->size);
 
-    if (raw_info->num_img > 1) {
+    if (raw_info->img_info.num_img > 1) {
         tsk_fprintf(hFile,
             "\n--------------------------------------------\n");
         tsk_fprintf(hFile, "Split Information:\n");
 
-        for (i = 0; i < raw_info->num_img; i++) {
+        for (i = 0; i < raw_info->img_info.num_img; i++) {
             tsk_fprintf(hFile,
                 "%" PRIttocTSK "  (%" PRIuOFF " to %" PRIuOFF ")\n",
-                raw_info->images[i],
+                raw_info->img_info.images[i],
                 (TSK_OFF_T) (i == 0) ? 0 : raw_info->max_off[i - 1],
                 (TSK_OFF_T) (raw_info->max_off[i] - 1));
         }
@@ -359,14 +359,14 @@ raw_close(TSK_IMG_INFO * img_info)
             close(raw_info->cache[i].fd);
 #endif
     }
-    for (i = 0; i < raw_info->num_img; i++) {
-        if (raw_info->images[i])
-            free(raw_info->images[i]);
+    for (i = 0; i < raw_info->img_info.num_img; i++) {
+        if (raw_info->img_info.images[i])
+            free(raw_info->img_info.images[i]);
     }
     if (raw_info->max_off)
         free(raw_info->max_off);
-    if (raw_info->images)
-        free(raw_info->images);
+    if (raw_info->img_info.images)
+        free(raw_info->img_info.images);
     if (raw_info->cptr)
         free(raw_info->cptr);
 
@@ -597,9 +597,9 @@ raw_open(int a_num_img, const TSK_TCHAR * const a_images[],
 
     /* see if there are more of them... */
     if ((a_num_img == 1) && (raw_info->is_winobj == 0)) {
-        if ((raw_info->images =
+        if ((raw_info->img_info.images =
                 tsk_img_findFiles(a_images[0],
-                    &raw_info->num_img)) == NULL) {
+                    &raw_info->img_info.num_img)) == NULL) {
             tsk_error_reset();
             tsk_error_set_errno(TSK_ERR_IMG_STAT);
             tsk_error_set_errstr
@@ -610,54 +610,54 @@ raw_open(int a_num_img, const TSK_TCHAR * const a_images[],
         }
     }
     else {
-        raw_info->num_img = a_num_img;
-        raw_info->images =
+        raw_info->img_info.num_img = a_num_img;
+        raw_info->img_info.images =
             (TSK_TCHAR **) tsk_malloc(sizeof(TSK_TCHAR *) * a_num_img);
-        if (raw_info->images == NULL) {
+        if (raw_info->img_info.images == NULL) {
             tsk_img_free(raw_info);
             return NULL;
         }
 
-        for (i = 0; i < raw_info->num_img; i++) {
+        for (i = 0; i < raw_info->img_info.num_img; i++) {
             size_t len = TSTRLEN(a_images[i]);
-            raw_info->images[i] =
+            raw_info->img_info.images[i] =
                 (TSK_TCHAR *) tsk_malloc(sizeof(TSK_TCHAR) * (len + 1));
-            if (raw_info->images[i] == NULL) {
+            if (raw_info->img_info.images[i] == NULL) {
                 int j;
                 for (j = 0; j < i; j++) {
-                    free(raw_info->images[j]);
+                    free(raw_info->img_info.images[j]);
                 }
-                free(raw_info->images);
+                free(raw_info->img_info.images);
                 tsk_img_free(raw_info);
                 return NULL;
             }
-            TSTRNCPY(raw_info->images[i], a_images[i], len + 1);
+            TSTRNCPY(raw_info->img_info.images[i], a_images[i], len + 1);
         }
     }
 
     /* sanity check: when we have multiple segments, the size of
      * each must be known */
-    if ((raw_info->num_img > 1) && (first_seg_size < 0)) {
+    if ((raw_info->img_info.num_img > 1) && (first_seg_size < 0)) {
         if (tsk_verbose) {
             tsk_fprintf(stderr,
                 "raw_open: file size is unknown in a segmented raw image\n");
         }
 
-        for (i = 0; i < raw_info->num_img; i++) {
-            free(raw_info->images[i]);
+        for (i = 0; i < raw_info->img_info.num_img; i++) {
+            free(raw_info->img_info.images[i]);
         }
-        free(raw_info->images);
+        free(raw_info->img_info.images);
         tsk_img_free(raw_info);
         return NULL;
     }
 
     /* initialize the split cache */
-    raw_info->cptr = (int *) tsk_malloc(raw_info->num_img * sizeof(int));
+    raw_info->cptr = (int *) tsk_malloc(raw_info->img_info.num_img * sizeof(int));
     if (raw_info->cptr == NULL) {
-        for (i = 0; i < raw_info->num_img; i++) {
-            free(raw_info->images[i]);
+        for (i = 0; i < raw_info->img_info.num_img; i++) {
+            free(raw_info->img_info.images[i]);
         }
-        free(raw_info->images);
+        free(raw_info->img_info.images);
         tsk_img_free(raw_info);
         return NULL;
     }
@@ -668,13 +668,13 @@ raw_open(int a_num_img, const TSK_TCHAR * const a_images[],
     /* initialize the offset table and re-use the first segment
      * size gathered above */
     raw_info->max_off =
-        (TSK_OFF_T *) tsk_malloc(raw_info->num_img * sizeof(TSK_OFF_T));
+        (TSK_OFF_T *) tsk_malloc(raw_info->img_info.num_img * sizeof(TSK_OFF_T));
     if (raw_info->max_off == NULL) {
         free(raw_info->cptr);
-        for (i = 0; i < raw_info->num_img; i++) {
-            free(raw_info->images[i]);
+        for (i = 0; i < raw_info->img_info.num_img; i++) {
+            free(raw_info->img_info.images[i]);
         }
-        free(raw_info->images);
+        free(raw_info->img_info.images);
         tsk_img_free(raw_info);
         return NULL;
     }
@@ -685,16 +685,16 @@ raw_open(int a_num_img, const TSK_TCHAR * const a_images[],
         tsk_fprintf(stderr,
             "raw_open: segment: 0  size: %" PRIuOFF "  max offset: %"
             PRIuOFF "  path: %" PRIttocTSK "\n", first_seg_size,
-            raw_info->max_off[0], raw_info->images[0]);
+            raw_info->max_off[0], raw_info->img_info.images[0]);
     }
 
     /* get size info for each file - we do not open each one because that
      * could cause us to run out of file decsriptors when we only need a few.
      * The descriptors are opened as needed */
-    for (i = 1; i < raw_info->num_img; i++) {
+    for (i = 1; i < raw_info->img_info.num_img; i++) {
         TSK_OFF_T size;
         raw_info->cptr[i] = -1;
-        size = get_size(raw_info->images[i], raw_info->is_winobj);
+        size = get_size(raw_info->img_info.images[i], raw_info->is_winobj);
         if (size < 0) {
             if (size == -1) {
                 if (tsk_verbose) {
@@ -703,10 +703,10 @@ raw_open(int a_num_img, const TSK_TCHAR * const a_images[],
                 }
             }
             free(raw_info->cptr);
-            for (i = 0; i < raw_info->num_img; i++) {
-                free(raw_info->images[i]);
+            for (i = 0; i < raw_info->img_info.num_img; i++) {
+                free(raw_info->img_info.images[i]);
             }
-            free(raw_info->images);
+            free(raw_info->img_info.images);
             tsk_img_free(raw_info);
             return NULL;
         }
@@ -719,7 +719,7 @@ raw_open(int a_num_img, const TSK_TCHAR * const a_images[],
             tsk_fprintf(stderr,
                 "raw_open: segment: %d  size: %" PRIuOFF "  max offset: %"
                 PRIuOFF "  path: %" PRIttocTSK "\n", i, size,
-                raw_info->max_off[i], raw_info->images[i]);
+                raw_info->max_off[i], raw_info->img_info.images[i]);
         }
     }
 
diff --git a/tsk/img/raw.h b/tsk/img/raw.h
index ad32180bcc9a6ef1c82f4f74b52954a8f6029701..f64ae70babda5cb346873d22ac01a720eb13dae4 100644
--- a/tsk/img/raw.h
+++ b/tsk/img/raw.h
@@ -35,11 +35,9 @@ extern "C" {
 
     typedef struct {
         TSK_IMG_INFO img_info;
-        int num_img;
         uint8_t is_winobj;
 
         // the following are protected by cache_lock in IMG_INFO
-        TSK_TCHAR **images;
         TSK_OFF_T *max_off;
         int *cptr;              /* exists for each image - points to entry in cache */
         IMG_SPLIT_CACHE cache[SPLIT_CACHE];     /* small number of fds for open images */
diff --git a/tsk/img/tsk_img.h b/tsk/img/tsk_img.h
index 19c094539900837d7d16821d288d3b16b6a79593..4415dcf680a7ad6383440307c6b1712f5381b637 100644
--- a/tsk/img/tsk_img.h
+++ b/tsk/img/tsk_img.h
@@ -85,10 +85,14 @@ extern "C" {
         uint32_t tag;           ///< Set to TSK_IMG_INFO_TAG when struct is alloc
         TSK_IMG_TYPE_ENUM itype;        ///< Type of disk image format
         TSK_OFF_T size;         ///< Total size of image in bytes
+        int num_img;            ///< Number of image files
         unsigned int sector_size;       ///< sector size of device in bytes (typically 512)
         unsigned int page_size;         ///< page size of NAND page in bytes (defaults to 2048)
         unsigned int spare_size;        ///< spare or OOB size of NAND in bytes (defaults to 64)
 
+        // the following are protected by cache_lock in IMG_INFO
+        TSK_TCHAR **images;    ///< Image names
+
         tsk_lock_t cache_lock;  ///< Lock for cache and associated values
         char cache[TSK_IMG_INFO_CACHE_NUM][TSK_IMG_INFO_CACHE_LEN];     ///< read cache (r/w shared - lock) 
         TSK_OFF_T cache_off[TSK_IMG_INFO_CACHE_NUM];    ///< starting byte offset of corresponding cache entry (r/w shared - lock) 
diff --git a/tsk/img/tsk_img_i.h b/tsk/img/tsk_img_i.h
index 6cd1a99a8e20b9b57fd1478e39a75dfa2aa7535c..ee8586bd5030e9a8882923d3a2bc94962ae7b848 100644
--- a/tsk/img/tsk_img_i.h
+++ b/tsk/img/tsk_img_i.h
@@ -40,9 +40,6 @@ extern void tsk_img_free(void *);
 extern TSK_TCHAR **tsk_img_findFiles(const TSK_TCHAR * a_startingName,
     int *a_numFound);
 
-extern const TSK_TCHAR **
-    tsk_img_get_names(TSK_IMG_INFO *a_img_info, int *a_num_imgs); 
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/tsk/img/vhd.c b/tsk/img/vhd.c
index d36d713a7f3a4ff84ad9ffcefc6dded3e9d2606d..ba45fedc1e3b2a32cb189e586c9a18614b29a400 100644
--- a/tsk/img/vhd.c
+++ b/tsk/img/vhd.c
@@ -132,10 +132,10 @@ static void
         tsk_error_set_errstr("vhdi_image_close: unable to free handle - %s", errmsg);
     }
 
-    for (i = 0; i < vhdi_info->num_imgs; i++) {
-        free(vhdi_info->images[i]);
+    for (i = 0; i < vhdi_info->img_info.num_img; i++) {
+        free(vhdi_info->img_info.images[i]);
     }
-    free(vhdi_info->images);
+    free(vhdi_info->img_info.images);
 
     tsk_deinit_lock(&(vhdi_info->read_lock));
     tsk_img_free(img_info);
@@ -166,21 +166,21 @@ vhdi_open(int a_num_img,
     vhdi_info->handle = NULL;
     img_info = (TSK_IMG_INFO *) vhdi_info;
  
-    vhdi_info->num_imgs = a_num_img;
-    if ((vhdi_info->images =
+    vhdi_info->img_info.num_img = a_num_img;
+    if ((vhdi_info->img_info.images =
         (TSK_TCHAR **) tsk_malloc(a_num_img *
         sizeof(TSK_TCHAR *))) == NULL) {
             tsk_img_free(vhdi_info);
             return NULL;
     }
     for (i = 0; i < a_num_img; i++) {
-        if ((vhdi_info->images[i] =
+        if ((vhdi_info->img_info.images[i] =
             (TSK_TCHAR *) tsk_malloc((TSTRLEN(a_images[i]) +
             1) * sizeof(TSK_TCHAR))) == NULL) {
                 tsk_img_free(vhdi_info);
                 return NULL;
         }
-        TSTRNCPY(vhdi_info->images[i], a_images[i],
+        TSTRNCPY(vhdi_info->img_info.images[i], a_images[i],
             TSTRLEN(a_images[i]) + 1);
     }
 
@@ -202,7 +202,7 @@ vhdi_open(int a_num_img,
     }
     // Check the file signature before we call the library open
 #if defined( TSK_WIN32 )
-    if( libvhdi_check_file_signature_wide((const wchar_t *) vhdi_info->images[0], &vhdi_error ) != 1 )
+    if( libvhdi_check_file_signature_wide((const wchar_t *) vhdi_info->img_info.images[0], &vhdi_error ) != 1 )
 #else
     if( libvhdi_check_file_signature((const char *) vhdi_info->images[0], &vhdi_error) != 1)
 #endif
@@ -225,7 +225,7 @@ vhdi_open(int a_num_img,
     }
 #if defined( TSK_WIN32 )
     if (libvhdi_file_open_wide(vhdi_info->handle,
-            (const wchar_t *) vhdi_info->images[0],
+            (const wchar_t *) vhdi_info->img_info.images[0],
             LIBVHDI_OPEN_READ, &vhdi_error) != 1)
 #else
     if (libvhdi_file_open(vhdi_info->handle,
diff --git a/tsk/img/vhd.h b/tsk/img/vhd.h
index 3b37ab7dc9da2496e45a582ebfdf0d6a4a256a18..1e33dd7e6c31e53e92851359e140f1afd56c2023 100644
--- a/tsk/img/vhd.h
+++ b/tsk/img/vhd.h
@@ -32,8 +32,6 @@ extern "C" {
     typedef struct {
         TSK_IMG_INFO img_info;
         libvhdi_file_t *handle;
-        TSK_TCHAR **images;
-        int num_imgs;
         tsk_lock_t read_lock;   // Lock for reads since according to documentation libvhdi is not fully thread safe yet
     } IMG_VHDI_INFO;
 
diff --git a/tsk/img/vmdk.c b/tsk/img/vmdk.c
index cd21701fe1a7fd38778782bc8a9ced752c8991c8..99fbab7435b11ffe1f33b753d86128d48d1bfb8a 100644
--- a/tsk/img/vmdk.c
+++ b/tsk/img/vmdk.c
@@ -132,10 +132,10 @@ static void
         tsk_error_set_errstr("vmdk_image_close: unable to free handle - %s", errmsg);
     }
 
-    for (i = 0; i < vmdk_info->num_imgs; i++) {
-        free(vmdk_info->images[i]);
+    for (i = 0; i < vmdk_info->img_info.num_img; i++) {
+        free(vmdk_info->img_info.images[i]);
     }
-    free(vmdk_info->images);
+    free(vmdk_info->img_info.images);
 
     tsk_deinit_lock(&(vmdk_info->read_lock));
     tsk_img_free(img_info);
@@ -166,21 +166,21 @@ vmdk_open(int a_num_img,
     vmdk_info->handle = NULL;
     img_info = (TSK_IMG_INFO *) vmdk_info;
  
-    vmdk_info->num_imgs = a_num_img;
-    if ((vmdk_info->images =
+    vmdk_info->img_info.num_img = a_num_img;
+    if ((vmdk_info->img_info.images =
         (TSK_TCHAR **) tsk_malloc(a_num_img *
         sizeof(TSK_TCHAR *))) == NULL) {
             tsk_img_free(vmdk_info);
             return NULL;
     }
     for (i = 0; i < a_num_img; i++) {
-        if ((vmdk_info->images[i] =
+        if ((vmdk_info->img_info.images[i] =
             (TSK_TCHAR *) tsk_malloc((TSTRLEN(a_images[i]) +
             1) * sizeof(TSK_TCHAR))) == NULL) {
                 tsk_img_free(vmdk_info);
                 return NULL;
         }
-        TSTRNCPY(vmdk_info->images[i], a_images[i],
+        TSTRNCPY(vmdk_info->img_info.images[i], a_images[i],
             TSTRLEN(a_images[i]) + 1);
     }
 
@@ -202,7 +202,7 @@ vmdk_open(int a_num_img,
     }
 #if defined( TSK_WIN32 )
     if (libvmdk_handle_open_wide(vmdk_info->handle,
-            (const wchar_t *) vmdk_info->images[0],
+            (const wchar_t *) vmdk_info->img_info.images[0],
             LIBVMDK_OPEN_READ, &vmdk_error) != 1)
 #else
     if (libvmdk_handle_open(vmdk_info->handle,
diff --git a/tsk/img/vmdk.h b/tsk/img/vmdk.h
index 08f49d26f595d5089fac7937e0b5547f24999d25..0b3ba286da889bdee65a73be3a1f893e709d854f 100644
--- a/tsk/img/vmdk.h
+++ b/tsk/img/vmdk.h
@@ -32,8 +32,6 @@ extern "C" {
     typedef struct {
         TSK_IMG_INFO img_info;
         libvmdk_handle_t *handle;
-        TSK_TCHAR **images;
-        int num_imgs;
         tsk_lock_t read_lock;   // Lock for reads since according to documentation libvmdk is not fully thread safe yet
     } IMG_VMDK_INFO;