diff --git a/ale/drivers/base.py b/ale/drivers/base.py
index d424540074067502261c94508d4f52aaf12d7476..050ed24852cb85894f4c9ae2538caa5decbf8cb3 100644
--- a/ale/drivers/base.py
+++ b/ale/drivers/base.py
@@ -111,6 +111,10 @@ class PDS3():
         self._sensor_velocity = eph_rates
         self._sensor_position = eph
 
+    @property
+    def focal_plane_tempature(self):
+        return self.label['FOCAL_PLANE_TEMPERATURE'].value
+
     @property
     def label(self):
         if not hasattr(self, "_label"):
@@ -159,6 +163,10 @@ class PDS3():
     def _target_id(self):
         return spice.bodn2c(self.label['TARGET_NAME'])
 
+    @property
+    def focal_epsilon(self):
+        return float(spice.gdpool('INS{}_FL_UNCERTAINTY'.format(self.ikid), 0, 1)[0])
+
     @property
     def starting_ephemeris_time(self):
         if not hasattr(self, '_starting_ephemeris_time'):
diff --git a/ale/drivers/cassini_driver.py b/ale/drivers/cassini_driver.py
index c66b8ad31994db79a8fbf558dbe92b7e75c75a24..ebbb670fb19a8ebd17cecbda0253b34789cfeb19 100644
--- a/ale/drivers/cassini_driver.py
+++ b/ale/drivers/cassini_driver.py
@@ -30,7 +30,7 @@ class CassiniISS(Framer):
 
     @property
     def instrument_id(self):
-        return self.id_lookup[self._label['INSTRUMENT_ID']]
+        return self.id_lookup[self.label['INSTRUMENT_ID']]
 
     @property
     def focal_epsilon(self):
@@ -54,7 +54,7 @@ class CassiniISS(Framer):
     @property
     def _exposure_duration(self):
         # labels do not specify a unit explicitly
-        return self._label['EXPOSURE_DURATION'] * 0.001  # Scale to seconds
+        return self.label['EXPOSURE_DURATION'] * 0.001  # Scale to seconds
 
     @property
     def odtk(self):
diff --git a/ale/drivers/keys.py b/ale/drivers/keys.py
index 0b797589cb84db7ffe024289104d90676d13adaa..94cf987c7e744dcb3362fc59015155a94f8a0165 100644
--- a/ale/drivers/keys.py
+++ b/ale/drivers/keys.py
@@ -1,19 +1,15 @@
 base = {
-    'name_model'
+    'name_model',
     'center_ephemeris_time',
     'detector_center',
     'detector_line_summing',
     'detector_sample_summing',
-    'dt_ephemeris',
-    'dt_quaternion',
     'ending_ephemeris_time',
     'exposure_duration',
     'focal2pixel_lines',
     'focal2pixel_samples',
     'focal_epsilon',
     'focal_length',
-    'focal_plane_tempature',
-    'id_lookup',
     'ikid',
     'image_lines',
     'image_samples',
@@ -57,6 +53,10 @@ framer = {
     'filter_number',
 }
 
+temp_dep_focal_legth = {
+    'focal_plane_tempature'
+}
+
 linescanner = {
     'line_exposure_duration',
     'line_scan_rate',
diff --git a/ale/drivers/lro_driver.py b/ale/drivers/lro_driver.py
index 14a54cad9128656ada4b3698a8ad15dc2b67d598..5654f672f993a8779a17326cf8af1713b90fc8a9 100644
--- a/ale/drivers/lro_driver.py
+++ b/ale/drivers/lro_driver.py
@@ -11,7 +11,7 @@ from ale.drivers import keys
 
 
 class LrocSpice(Spice, LineScanner):
-    required_keys = keys.base | keys.framer
+    required_keys = keys.base | keys.linescanner
 
     @property
     def metakernel(self):
@@ -31,10 +31,10 @@ class LroPds3Driver(PDS3, LrocSpice):
         Ignores Wide Angle for now
         """
 
-        instrument = self._label.get("INSTRUMENT_ID")
+        instrument = self.label.get("INSTRUMENT_ID")
 
         # should be left or right
-        frame_id = self._label.get("FRAME_ID")
+        frame_id = self.label.get("FRAME_ID")
 
         if instrument == "LROC" and frame_id == "LEFT":
             return "LRO_LROCNACL"
diff --git a/ale/drivers/mdis_driver.py b/ale/drivers/mdis_driver.py
index c44a64bca996dcbf7bdb6b91e350a2d7dc4a418a..89770feb9eb99448e6acb01d409a3daa8e3f70d5 100644
--- a/ale/drivers/mdis_driver.py
+++ b/ale/drivers/mdis_driver.py
@@ -18,7 +18,7 @@ class MdisSpice(Spice, Framer):
         'MERCURY DUAL IMAGING SYSTEM WIDE ANGLE CAMERA':'MSGR_MDIS_WAC'
     }
 
-    required_keys = keys.base | keys.framer | keys.filter | keys.transverse_distortion
+    required_keys = keys.base | keys.framer | keys.filter | keys.transverse_distortion | keys.temp_dep_focal_legth
 
     @property
     def metakernel(self):
@@ -43,10 +43,6 @@ class MdisSpice(Spice, Framer):
         # eval at the focal_plane_tempature
         return f_t(self.focal_plane_tempature)
 
-    @property
-    def focal_epsilon(self):
-        return float(spice.gdpool('INS{}_FL_UNCERTAINTY'.format(self.ikid), 0, 1)[0])
-
     @property
     def starting_detector_sample(self):
         return int(spice.gdpool('INS{}_FPUBIN_START_SAMPLE'.format(self.ikid), 0, 1)[0])
@@ -59,11 +55,7 @@ class MdisSpice(Spice, Framer):
 class MdisPDS3Driver(PDS3, MdisSpice):
     @property
     def instrument_id(self):
-        return self.id_lookup[self._label['INSTRUMENT_ID']]
-
-    @property
-    def focal_plane_tempature(self):
-        return self._label['FOCAL_PLANE_TEMPERATURE'].value
+        return self.id_lookup[self.label['INSTRUMENT_ID']]
 
 
 class MdisIsis3Driver(Isis3, MdisSpice):
@@ -79,8 +71,8 @@ class MdisIsis3Driver(Isis3, MdisSpice):
 
     @property
     def instrument_id(self):
-        return self.id_lookup[self._label['IsisCube']['Instrument']['InstrumentId']]
+        return self.id_lookup[self.label['IsisCube']['Instrument']['InstrumentId']]
 
     @property
     def focal_plane_tempature(self):
-        return self._label['IsisCube']['Instrument']['FocalPlaneTemperature'].value
+        return self.label['IsisCube']['Instrument']['FocalPlaneTemperature'].value
diff --git a/ale/drivers/mro_driver.py b/ale/drivers/mro_driver.py
index ce7acf7c4c878d3e9b50140c64cd0b49d30ef079..870d3eca1d40398e2de673a972edbb7e78a2ade0 100644
--- a/ale/drivers/mro_driver.py
+++ b/ale/drivers/mro_driver.py
@@ -32,15 +32,15 @@ class CtxSpice(Spice, LineScanner):
 class CtxPds3Driver(PDS3, CtxSpice):
     @property
     def instrument_id(self):
-        return self.id_lookup[self._label['INSTRUMENT_NAME']]
+        return self.id_lookup[self.label['INSTRUMENT_NAME']]
 
     @property
     def spacecraft_name(self):
         name_lookup = {
             'MARS_RECONNAISSANCE_ORBITER': 'MRO'
         }
-        return name_lookup[self._label['SPACECRAFT_NAME']]
+        return name_lookup[self.label['SPACECRAFT_NAME']]
 
     @property
     def instrument_id(self):
-        return self.id_lookup[self._label['INSTRUMENT_NAME']]
+        return self.id_lookup[self.label['INSTRUMENT_NAME']]
diff --git a/tests/pytests/test_lro_drivers.py b/tests/pytests/test_lro_drivers.py
index 39fb43dc33d557a1868545a7b6a4d3d20e1a4a82..05234b7d06ab00892a2707a55f1ddd6fd5faa469 100644
--- a/tests/pytests/test_lro_drivers.py
+++ b/tests/pytests/test_lro_drivers.py
@@ -115,3 +115,4 @@ def test_lro_creation(lro_lroclabel):
     with LroPds3Driver(lro_lroclabel) as m:
         d = m.to_dict()
         assert isinstance(d, dict)
+        assert(set(d.keys()) == m.required_keys)
diff --git a/tests/pytests/test_mdis_driver.py b/tests/pytests/test_mdis_driver.py
index efcbd00a3425eeec72f5280a70e34fe900d14ad9..a290173041896bc4e9902652d102f8c5bb14ecc0 100644
--- a/tests/pytests/test_mdis_driver.py
+++ b/tests/pytests/test_mdis_driver.py
@@ -247,3 +247,4 @@ def test_mdis_creation(mdislabel):
     with MdisPDS3Driver(mdislabel) as m:
         d = m.to_dict()
         assert isinstance(d, dict)
+        assert(set(d.keys()) == m.required_keys)
diff --git a/tests/pytests/test_mro_drivers.py b/tests/pytests/test_mro_drivers.py
index 6f73701267efb77b56c7d93e3d26c61f69c744e3..a18b153593d260e6faa40471bea43b5c19892106 100644
--- a/tests/pytests/test_mro_drivers.py
+++ b/tests/pytests/test_mro_drivers.py
@@ -62,7 +62,8 @@ def mroctx_label():
     END"""
 
 
-def test_get_dict(mroctx_label):
+def test_ctx_creation(mroctx_label):
     with CtxPds3Driver(mroctx_label) as m:
         d = m.to_dict()
     assert isinstance(d, dict)
+    assert(set(d.keys()) == m.required_keys)