diff --git a/plio/io/hcube.py b/plio/io/hcube.py
index 9b41a71a97f002c2a74eea52b57993efdbf94542..0d1ed9fea846067aaa16a3c1be62d7d3f14df75f 100644
--- a/plio/io/hcube.py
+++ b/plio/io/hcube.py
@@ -1,6 +1,9 @@
 import numpy as np
 import gdal
 
+from ..utils.indexing import _LocIndexer, _iLocIndexer
+
+
 class HCube(object):
     """
     A Mixin class for use with the io_gdal.GeoDataset class
@@ -27,7 +30,6 @@ class HCube(object):
     
     @tolerance.setter
     def tolerance(self, val):
-        wv = self.wavelengths
         if isinstance(val, int):
             self._tolerance = val
             self._reindex()
@@ -39,7 +41,8 @@ class HCube(object):
             self._wavelengths = np.round(self._original_wavelengths, decimals=self.tolerance)
 
     def __getitem__(self, key):
-        return _iLocIndexer(self)
+        i = _iLocIndexer(self)
+        return i[key]
     
     @property
     def loc(self):
@@ -54,7 +57,6 @@ class HCube(object):
 
         y = key[1]
         x = key[2]
-        
         if isinstance(x, slice):
             xstart = ifnone(x.start,0)
             xstop = ifnone(x.stop,self.raster_size[0])
@@ -68,8 +70,11 @@ class HCube(object):
         else:
             raise TypeError("Loc style access elements must be slices, e.g., [:] or [10:100]")
             
-        pixels = (xstart, ystart, xstop, ystop)
-        arrs = []
-        for b in key[0]:
-            arrs.append(self.read_array(band=int(b+1), pixels=pixels))
+        pixels = (xstart, ystart, xstep, ystep)
+        if isinstance(key[0], (int, np.integer)):
+            return self.read_array(band=int(key[0]+1), pixels=pixels)
+        else:
+            arrs = []
+            for b in key[0]:
+                arrs.append(self.read_array(band=int(b+1), pixels=pixels))
         return np.stack(arrs)
\ No newline at end of file
diff --git a/plio/io/io_moon_minerology_mapper.py b/plio/io/io_moon_minerology_mapper.py
index 3093c2c75c5d2b69eb80153a5e4b052e0f85297a..c28a7dc99da72d14ecc562466906903365b7299e 100644
--- a/plio/io/io_moon_minerology_mapper.py
+++ b/plio/io/io_moon_minerology_mapper.py
@@ -14,8 +14,15 @@ class M3(GeoDataset, HCube):
         if not hasattr(self, '_wavelengths'):
             try:
                 info = gdal.Info(self.file_name, format='json')
-                wavelengths = [float(j) for i, j in sorted(info['metadata'][''].items(),
-                                 key=lambda x: float(x[0].split('_')[-1]))]
+                if 'Resize' in info['metadata']['']['Band_1']:
+                    wavelengths = [float(j.split(' ')[-1].replace('(','').replace(')', '')) for\
+                                  i,j in sorted(info['metadata'][''].items(),
+                                  key=lambda x: float(x[0].split('_')[-1]))]
+                    # This is a geotiff translated from the PDS IMG
+                else:
+                    # This is a PDS IMG
+                    wavelengths = [float(j) for i, j in sorted(info['metadata'][''].items(),
+                                    key=lambda x: float(x[0].split('_')[-1]))]
                 self._original_wavelengths = wavelengths
                 self._wavelengths = np.round(wavelengths, self.tolerance)
             except:
diff --git a/plio/utils/indexing.py b/plio/utils/indexing.py
index 50fa17a1a269b0de6f976025f7c93d8d2d1ce7c0..9dc7c93cea8d933f6dd7ba183a7cc843fce8a96e 100644
--- a/plio/utils/indexing.py
+++ b/plio/utils/indexing.py
@@ -35,7 +35,7 @@ def expanded_indexer(key, ndim):
 class _LocIndexer(object):
     def __init__(self, data_array):
         self.data_array = data_array
-        
+    
     def __getitem__(self, key):
         # expand the indexer so we can handle Ellipsis
         key = expanded_indexer(key, 3)
@@ -43,8 +43,11 @@ class _LocIndexer(object):
         ifnone = lambda a, b: b if a is None else a
         if isinstance(sl, slice):
             sl = list(range(ifnone(sl.start, 0), self.data_array.nbands, ifnone(sl.step, 1)))
-        
-        idx = [self._get_idx(s) for s in sl]
+
+        if isinstance(sl, (int, float)):
+            idx = self._get_idx(sl)
+        else:    
+            idx = [self._get_idx(s) for s in sl]
         key = (idx, key[1], key[2])
         return self.data_array._read(key)   
     
@@ -52,7 +55,7 @@ class _LocIndexer(object):
         vals = np.abs(self.data_array.wavelengths-value)
         minidx = np.argmin(vals)
         if vals[minidx] >= tolerance:
-            warning.warn("Absolute difference between requested value and found values is {}".format(vals[minidx]))
+            warnings.warn("Absolute difference between requested value and found values is {}".format(vals[minidx]))
         return minidx
     
 class _iLocIndexer(object):