diff --git a/ale/drivers/__init__.py b/ale/drivers/__init__.py
index dec72175e47023f5b67aa0e6cb0a929b8e45722d..d739e564bd6204f94b66eec1f487e796dbcfcfcb 100644
--- a/ale/drivers/__init__.py
+++ b/ale/drivers/__init__.py
@@ -61,6 +61,16 @@ def load(label, props={}, formatter='ale', verbose=False):
     ----------
     label : str
                String path to the given label file
+
+    props : dict
+            A dictionary of optional keywords/parameters for use in driver
+            loading
+
+    formatter : str
+                Formatted output to expect from the driver
+
+    verbose : bool
+              If True, displays error messages from driver loading
     """
     if isinstance(formatter, str):
         formatter = __formatters__[formatter]
diff --git a/ale/drivers/lro_drivers.py b/ale/drivers/lro_drivers.py
index cd2eaeb46ea04566e14327f845880d74310c8465..4630381bf60dc113d7aaed117a1b54add81417df 100644
--- a/ale/drivers/lro_drivers.py
+++ b/ale/drivers/lro_drivers.py
@@ -168,11 +168,11 @@ class LroLrocPds3LabelNaifSpiceDriver(LineScanner, NaifSpice, Pds3Label, Driver)
         Takes the exposure_duration defined in a parent class and adds
         offsets taken from an IAK.
 
-         Returns
-         -------
-         : float
-           Returns the exposure duration in seconds.
-         """
+        Returns
+        -------
+        : float
+          Returns the exposure duration in seconds.
+        """
         return super().exposure_duration * (1 + self.multiplicative_line_error) + self.additive_line_error
 
     @property
@@ -180,11 +180,11 @@ class LroLrocPds3LabelNaifSpiceDriver(LineScanner, NaifSpice, Pds3Label, Driver)
         """
         Returns the multiplicative line error defined in an IAK.
 
-         Returns
-         -------
-         : float
-           Returns the multiplicative line error.
-         """
+        Returns
+        -------
+        : float
+          Returns the multiplicative line error.
+        """
         return 0.0045
 
     @property
@@ -192,11 +192,11 @@ class LroLrocPds3LabelNaifSpiceDriver(LineScanner, NaifSpice, Pds3Label, Driver)
         """
         Returns the additive line error defined in an IAK.
 
-         Returns
-         -------
-         : float
-           Returns the additive line error.
-         """
+        Returns
+        -------
+        : float
+          Returns the additive line error.
+        """
         return 0.0
 
     @property
@@ -204,11 +204,11 @@ class LroLrocPds3LabelNaifSpiceDriver(LineScanner, NaifSpice, Pds3Label, Driver)
         """
         Returns the constant time offset defined in an IAK.
 
-         Returns
-         -------
-         : float
-           Returns the constant time offset.
-         """
+        Returns
+        -------
+        : float
+          Returns the constant time offset.
+        """
         return 0.0
 
     @property
@@ -216,11 +216,11 @@ class LroLrocPds3LabelNaifSpiceDriver(LineScanner, NaifSpice, Pds3Label, Driver)
         """
         Returns the addition preroll defined in an IAK.
 
-         Returns
-         -------
-         : float
-           Returns the additionl preroll.
-         """
+        Returns
+        -------
+        : float
+          Returns the additionl preroll.
+        """
         return 1024.0
 
     @property
@@ -421,11 +421,11 @@ class LroLrocIsisLabelNaifSpiceDriver(LineScanner, NaifSpice, IsisLabel, Driver)
         """
         Returns the multiplicative line error defined in an IAK.
 
-         Returns
-         -------
-         : float
-           Returns the multiplicative line error.
-         """
+        Returns
+        -------
+        : float
+          Returns the multiplicative line error.
+        """
         return 0.0045
 
     @property
@@ -433,11 +433,11 @@ class LroLrocIsisLabelNaifSpiceDriver(LineScanner, NaifSpice, IsisLabel, Driver)
         """
         Returns the additive line error defined in an IAK.
 
-         Returns
-         -------
-         : float
-           Returns the additive line error.
-         """
+        Returns
+        -------
+        : float
+          Returns the additive line error.
+        """
         return 0.0
 
     @property
@@ -445,22 +445,23 @@ class LroLrocIsisLabelNaifSpiceDriver(LineScanner, NaifSpice, IsisLabel, Driver)
         """
         Returns the constant time offset defined in an IAK.
 
-         Returns
-         -------
-         : float
-           Returns the constant time offset.
-         """
+        Returns
+        -------
+        : float
+          Returns the constant time offset.
+        """
         return 0.0
 
     @property
     def additional_preroll(self):
         """
         Returns the addition preroll defined in an IAK.
-         Returns
-         -------
-         : float
-           Returns the additionl preroll.
-         """
+
+        Returns
+        -------
+        : float
+          Returns the additionl preroll.
+        """
         return 1024.0
 
     @property
diff --git a/ale/drivers/nh_drivers.py b/ale/drivers/nh_drivers.py
index 40a031de56b01d1a703c9cc99db7734e7b351523..529166d7cfc8b5155405df804f2e734a4d98138c 100644
--- a/ale/drivers/nh_drivers.py
+++ b/ale/drivers/nh_drivers.py
@@ -13,7 +13,7 @@ from ale.base.type_sensor import Framer
 
 class NewHorizonsLorriIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, Driver):
     """
-    Driver for reading New Horizons LORRI ISIS3 Labels. These are Labels that have been    
+    Driver for reading New Horizons LORRI ISIS3 Labels. These are Labels that have been
     ingested into ISIS from PDS EDR images but have not been spiceinit'd yet.
     """
     @property
@@ -22,6 +22,7 @@ class NewHorizonsLorriIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, Dri
         Returns an instrument id for uniquely identifying the instrument, but often
         also used to be piped into Spice Kernels to acquire IKIDs. Therefore they
         the same ID the Spice expects in bods2c calls.
+        
         Returns
         -------
         : str
@@ -38,10 +39,10 @@ class NewHorizonsLorriIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, Dri
         """
         Overridden to grab the ikid from the Isis Cube since there is no way to
         obtain this value with a spice bods2c call. Isis sets this value during
-        ingestion, based on the original fits file. 
+        ingestion, based on the original fits file.
 
-        For LORRI, there are two options associated with different binning modes: 
-        1x1 binning: -98301 
+        For LORRI, there are two options associated with different binning modes:
+        1x1 binning: -98301
         4x4 binning: -98302
 
 
@@ -51,4 +52,3 @@ class NewHorizonsLorriIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, Dri
           Naif Integer ID code for the instrument
         """
         return self.label['IsisCube']['Kernels']['NaifFrameCode']
-
diff --git a/ale/drivers/selene_drivers.py b/ale/drivers/selene_drivers.py
index ab134cf8b20ca54b6573f0ea3c61ce9356cfb60e..dd405a088aebadddc0a440fd4c4d594f94418846 100644
--- a/ale/drivers/selene_drivers.py
+++ b/ale/drivers/selene_drivers.py
@@ -63,8 +63,11 @@ class KaguyaTcPds3NaifSpiceDriver(LineScanner, Pds3Label, NaifSpice, Driver):
 
         INSTRUMENT_ID = TC1/TC2
         SD = S/D short for single or double, which in turn means whether the
-             the label belongs to a mono or stereo image.
-        COMPRESS = D/T short for DCT or through, we assume image has been decompressed already
+        label belongs to a mono or stereo image.
+
+        COMPRESS = D/T short for DCT or through, we assume image has been
+        decompressed already
+
         SWATCH = swatch mode, different swatch modes have different FOVs
 
         Returns
@@ -394,41 +397,66 @@ class KaguyaTcPds3NaifSpiceDriver(LineScanner, Pds3Label, NaifSpice, Driver):
         Starting sample varies from swath mode (either FULL, NOMINAL or HALF).
 
         From Kaguya IK kernel:
-
-                                                     End
-                                               Start Pixel
-        Sensor                                 Pixel (+dummy)  NAIF ID
-        -----------------------------------------------------------------
-        LISM_TC1                                  1  4096      -131351
-        LISM_TC2                                  1  4096      -131371
-        LISM_TC1_WDF  (Double DCT Full)           1  4096      -131352
-        LISM_TC1_WTF  (Double Through Full)       1  1600      -131353
-        LISM_TC1_SDF  (Single DCT Full)           1  4096      -131354
-        LISM_TC1_STF  (Single Through Full)       1  3208      -131355
-        LISM_TC1_WDN  (Double DCT Nominal)      297  3796(+4)  -131356
-        LISM_TC1_WTN  (Double Through Nominal)  297  1896      -131357
-        LISM_TC1_SDN  (Single DCT Nominal)      297  3796(+4)  -131358
-        LISM_TC1_STN  (Single Through Nominal)  297  3504      -131359
-        LISM_TC1_WDH  (Double DCT Half)        1172  2921(+2)  -131360
-        LISM_TC1_WTH  (Double Through Half)    1172  2771      -131361
-        LISM_TC1_SDH  (Single DCT Half)        1172  2921(+2)  -131362
-        LISM_TC1_STH  (Single Through Half)    1172  2923      -131363
-        LISM_TC1_SSH  (Single SP_support Half) 1172  2921      -131364
-
-        LISM_TC2_WDF  (Double DCT Full)           1  4096      -131372
-        LISM_TC2_WTF  (Double Through Full)       1  1600      -131373
-        LISM_TC2_SDF  (Single DCT Full)           1  4096      -131374
-        LISM_TC2_STF  (Single Through Full)       1  3208      -131375
-        LISM_TC2_WDN  (Double DCT Nominal)      297  3796(+4)  -131376
-        LISM_TC2_WTN  (Double Through Nominal)  297  1896      -131377
-        LISM_TC2_SDN  (Single DCT Nominal)      297  3796(+4)  -131378
-        LISM_TC2_STN  (Single Through Nominal)  297  3504      -131379
-        LISM_TC2_WDH  (Double DCT Half)        1172  2921(+2)  -131380
-        LISM_TC2_WTH  (Double Through Half)    1172  2771      -131381
-        LISM_TC2_SDH  (Single DCT Half)        1172  2921(+2)  -131382
-        LISM_TC2_STH  (Single Through Half)    1172  2923      -131383
-        LISM_TC2_SSH  (Single SP_support Half) 1172  2921      -131384
-
+        
+        +-----------------------------------------+--------------+----------------------+---------+
+        | Sensor                                  | Start Pixel  | End Pixel (+dummy)   | NAIF ID |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1                                | 1            | 4096                 | -131351 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2                                | 1            | 4096                 | -131371 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_WDF  (Double DCT Full)         | 1            | 4096                 | -131352 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_WTF  (Double Through Full)     | 1            | 1600                 | -131353 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_SDF  (Single DCT Full)         | 1            | 4096                 | -131354 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_STF  (Single Through Full)     | 1            | 3208                 | -131355 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_WDN  (Double DCT Nominal)      | 297          | 3796(+4)             | -131356 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_WTN  (Double Through Nominal)  | 297          | 1896                 | -131357 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_SDN  (Single DCT Nominal)      | 297          | 3796(+4)             | -131358 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_STN  (Single Through Nominal)  | 297          | 3504                 | -131359 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_WDH  (Double DCT Half)         | 1172         | 2921(+2)             | -131360 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_WTH  (Double Through Half)     | 1172         | 2771                 | -131361 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_SDH  (Single DCT Half)         | 1172         | 2921(+2)             | -131362 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_STH  (Single Through Half)     | 1172         | 2923                 | -131363 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC1_SSH  (Single SP_support Half)  | 1172         | 2921                 | -131364 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_WDF  (Double DCT Full)         | 1            | 4096                 | -131372 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_WTF  (Double Through Full)     | 1            | 1600                 | -131373 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_SDF  (Single DCT Full)         | 1            | 4096                 | -131374 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_STF  (Single Through Full)     | 1            | 3208                 | -131375 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_WDN  (Double DCT Nominal)      | 297          | 3796(+4)             | -131376 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_WTN  (Double Through Nominal)  | 297          | 1896                 | -131377 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_SDN  (Single DCT Nominal)      | 297          | 3796(+4)             | -131378 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_STN  (Single Through Nominal)  | 297          | 3504                 | -131379 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_WDH  (Double DCT Half)         | 1172         | 2921(+2)             | -131380 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_WTH  (Double Through Half)     | 1172         | 2771                 | -131381 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_SDH  (Single DCT Half)         | 1172         | 2921(+2)             | -131382 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_STH  (Single Through Half)     | 1172         | 2923                 | -131383 |
+        +-----------------------------------------+--------------+----------------------+---------+
+        | LISM_TC2_SSH  (Single SP_support Half)  | 1172         | 2921                 | -131384 |
+        +-----------------------------------------+--------------+----------------------+---------+
 
         Returns
         -------
@@ -822,5 +850,3 @@ class KaguyaMiPds3NaifSpiceDriver(LineScanner, Pds3Label, NaifSpice, Driver):
           ISIS sensor model version
         """
         return 1
-
-
diff --git a/ale/formatters/formatter.py b/ale/formatters/formatter.py
index 8b3b8a4bf199d8791ebced701b583d7d608322b5..2543ea40e280a77c724d1f0cfdbeaec413f7292c 100644
--- a/ale/formatters/formatter.py
+++ b/ale/formatters/formatter.py
@@ -96,7 +96,7 @@ def to_isd(driver):
     instrument_pointing['ck_table_original_size'] = len(time_dependent_rotation.times)
     instrument_pointing['ephemeris_times'] = time_dependent_rotation.times
     instrument_pointing['quaternions'] = time_dependent_rotation.quats[:, [3, 0, 1, 2]]
-    instrument_pointing['angular_velocity'] = time_dependent_rotation.av
+    instrument_pointing['angular_velocities'] = time_dependent_rotation.av
 
     # reference frame should be the last frame in the chain
     instrument_pointing["reference_frame"] = instrument_pointing['time_dependent_frames'][-1]
@@ -121,7 +121,7 @@ def to_isd(driver):
         body_rotation['ck_table_original_size'] = len(time_dependent_rotation.times)
         body_rotation['ephemeris_times'] = time_dependent_rotation.times
         body_rotation['quaternions'] = time_dependent_rotation.quats[:, [3, 0, 1, 2]]
-        body_rotation['angular_velocity'] = time_dependent_rotation.av
+        body_rotation['angular_velocities'] = time_dependent_rotation.av
 
     if source_frame != target_frame:
         # Reverse the frame order because ISIS orders frames as
diff --git a/docs/config b/docs/config
index 372715057989a7c44574fbdf7c500ed19c7e28f0..b8c1458cafb31c0f2e2d96cd59f2e2a17c070f57 100644
--- a/docs/config
+++ b/docs/config
@@ -58,7 +58,7 @@ PROJECT_LOGO           =
 # entered, it will be relative to the location where doxygen was started. If
 # left blank the current directory will be used.
 
-OUTPUT_DIRECTORY       =./docs/
+OUTPUT_DIRECTORY       =./
 
 # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
 # directories (in 2 levels) under the output directory of each output format and
@@ -791,7 +791,7 @@ WARN_LOGFILE           =
 # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
 # Note: If this tag is empty the current directory is searched.
 
-INPUT                  = ./include/Load.h ./ale ./src/
+INPUT                  = ../include/ale/ ./ale 
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -996,7 +996,7 @@ USE_MDFILE_AS_MAINPAGE =
 # also VERBATIM_HEADERS is set to NO.
 # The default value is: NO.
 
-SOURCE_BROWSER         = NO
+SOURCE_BROWSER         = YES
 
 # Setting the INLINE_SOURCES tag to YES will include the body of functions,
 # classes and enums directly into the documentation.
diff --git a/docs/source/library/ale/index.rst b/docs/source/library/ale/index.rst
deleted file mode 100644
index e348dca254e31e51b4222ea66c12fedd9c144a9f..0000000000000000000000000000000000000000
--- a/docs/source/library/ale/index.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-ALE C API
-=========
diff --git a/docs/source/library/capi/capi.rst b/docs/source/library/capi/capi.rst
deleted file mode 100644
index fb7b1bdacb73d86008c60b1ff27887ed587e88fd..0000000000000000000000000000000000000000
--- a/docs/source/library/capi/capi.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-:mod:`capi` --- ALE C-API
-==========================
-
-The :mod:`src` module
-
-.. doxygenfile:: Load.h
-  :project: ale
-
-.. versionadded:: 0.1.0
diff --git a/docs/source/library/capi/distortion.rst b/docs/source/library/capi/distortion.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5e222224d79b6be68988331dee7a9ccf3cc10f9c
--- /dev/null
+++ b/docs/source/library/capi/distortion.rst
@@ -0,0 +1,5 @@
+:mod:`distortion` --- ALE Distortion Functions
+==============================================
+
+.. doxygenfile:: Distortion.h
+   :project: ale
diff --git a/docs/source/library/capi/index.rst b/docs/source/library/capi/index.rst
index 686caff5196824445fce00ea2ec0d1b36d53c372..3808aa39d2a884b5c36c63ba2dc9b49e32b06121 100644
--- a/docs/source/library/capi/index.rst
+++ b/docs/source/library/capi/index.rst
@@ -1,6 +1,16 @@
-:mod:`capi` --- All ALE functions
-===================================
+:mod:`C` --- C Interface
+========================
+
+.. doxygenfile:: Load.h
+  :project: ale
 
 .. toctree::
 
-  capi
+  distortion
+  interp_utils
+  isd
+  orientation
+  rotation
+  state
+  util
+  vector
diff --git a/docs/source/library/capi/interp_utils.rst b/docs/source/library/capi/interp_utils.rst
new file mode 100644
index 0000000000000000000000000000000000000000..53aa6f9c8ddbd2d22fcfc531875b78224b683a06
--- /dev/null
+++ b/docs/source/library/capi/interp_utils.rst
@@ -0,0 +1,5 @@
+:mod:`interpolation` --- ALE Interpolation Functions
+====================================================
+
+.. doxygenfile:: InterpUtils.h
+   :project: ale
diff --git a/docs/source/library/capi/isd.rst b/docs/source/library/capi/isd.rst
new file mode 100644
index 0000000000000000000000000000000000000000..863aa76f934cb7f804c8570c260066f4a577e9a4
--- /dev/null
+++ b/docs/source/library/capi/isd.rst
@@ -0,0 +1,5 @@
+:mod:`ISD` --- ALE Image Support Data Class
+===========================================
+
+.. doxygenfile:: Isd.h
+   :project: ale
diff --git a/docs/source/library/capi/orientation.rst b/docs/source/library/capi/orientation.rst
new file mode 100644
index 0000000000000000000000000000000000000000..2cb48267ece060558731c881d0dcfb491110d884
--- /dev/null
+++ b/docs/source/library/capi/orientation.rst
@@ -0,0 +1,5 @@
+:mod:`orientations` --- ALE Orientation Classes & Functions
+===========================================================
+
+.. doxygenfile:: Orientations.h
+   :project: ale
diff --git a/docs/source/library/capi/rotation.rst b/docs/source/library/capi/rotation.rst
new file mode 100644
index 0000000000000000000000000000000000000000..9b330c68580b023252db04bfa62af7f8fdd6f875
--- /dev/null
+++ b/docs/source/library/capi/rotation.rst
@@ -0,0 +1,5 @@
+:mod:`rotation` --- ALE Rotation Classes & Functions
+======================================================
+
+.. doxygenfile:: Rotation.h
+   :project: ale
diff --git a/docs/source/library/capi/state.rst b/docs/source/library/capi/state.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e4f1ff7c4c483faf595b2960c8f64d3442ef3b8d
--- /dev/null
+++ b/docs/source/library/capi/state.rst
@@ -0,0 +1,5 @@
+:mod:`states` --- ALE States Classes & Functions
+====================================================
+
+.. doxygenfile:: States.h
+   :project: ale
diff --git a/docs/source/library/capi/util.rst b/docs/source/library/capi/util.rst
new file mode 100644
index 0000000000000000000000000000000000000000..8aaf88cf8b272ea1cba83ca9db39050f2a5a5527
--- /dev/null
+++ b/docs/source/library/capi/util.rst
@@ -0,0 +1,10 @@
+:mod:`utils` --- ALE Utility Functions
+==============================================
+
+Used in ``getDistortionModel`` and ``getDistortionCoeffs``
+
+.. doxygenenum:: DistortionType
+   :project: ale
+
+.. doxygenfile:: Util.h
+   :project: ale
diff --git a/docs/source/library/capi/vector.rst b/docs/source/library/capi/vector.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c73053875eef58c9b96780ce3fb2a67a8c625b31
--- /dev/null
+++ b/docs/source/library/capi/vector.rst
@@ -0,0 +1,5 @@
+:mod:`vectors` --- ALE Vector Classes & Functions
+===========================================================
+
+.. doxygenfile:: Vectors.h
+   :project: ale
diff --git a/docs/source/library/python/base.rst b/docs/source/library/python/base.rst
index c921b7b0d3a521102ad694a8a575e316b08632da..652ee65de3db9f141c50a07bdb4d139e8f4c6dcb 100644
--- a/docs/source/library/python/base.rst
+++ b/docs/source/library/python/base.rst
@@ -1,5 +1,5 @@
 :mod:`base` --- Default Driver Classes
-============================================
+======================================
 
 The :mod:`ale.drivers.base` module
 
diff --git a/docs/source/library/python/cassini_driver.rst b/docs/source/library/python/co_driver.rst
similarity index 80%
rename from docs/source/library/python/cassini_driver.rst
rename to docs/source/library/python/co_driver.rst
index 6f6825071dfd46f860bca2c0015586df0e857274..6ef071bb868d16fe518db040358ce821c5aae504 100644
--- a/docs/source/library/python/cassini_driver.rst
+++ b/docs/source/library/python/co_driver.rst
@@ -1,4 +1,4 @@
-:mod:`cassini_driver` --- Cassini Driver Classes
+:mod:`co_drivers` --- Cassini Driver Classes
 ================================================
 
 The :mod:`ale.drivers.co_drivers` module
diff --git a/docs/source/library/python/dawn_driver.rst b/docs/source/library/python/dawn_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..96dcbe0a87c917b012048d6ff37de15da597dd6b
--- /dev/null
+++ b/docs/source/library/python/dawn_driver.rst
@@ -0,0 +1,11 @@
+:mod:`dawn_drivers` --- Dawn Driver Classes
+===========================================
+
+The :mod:`ale.drivers.dawn_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.dawn_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/docs/source/library/python/hayabusa2_driver.rst b/docs/source/library/python/hayabusa2_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e605319b81629b5503b7fea127904ae24a81fd75
--- /dev/null
+++ b/docs/source/library/python/hayabusa2_driver.rst
@@ -0,0 +1,11 @@
+:mod:`hayabusa2_drivers` --- Hayabusa2 Driver Classes
+=====================================================
+
+The :mod:`ale.drivers.hayabusa2_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.hayabusa2_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/docs/source/library/python/index.rst b/docs/source/library/python/index.rst
index c8f2b795e299ce7a3d4b2e374d0f49537fc16736..9cc7d93db24eba472b41d8f5bf31eb3b3b4f7bf6 100644
--- a/docs/source/library/python/index.rst
+++ b/docs/source/library/python/index.rst
@@ -1,13 +1,25 @@
-:mod:`python` --- Input/Output Algorithms
-============================================
+:mod:`python` --- Driver Interfaces
+===================================
+
+.. autofunction:: ale.drivers.load
+
 
 .. toctree::
 
   base
-  cassini_driver
+  co_driver
+  dawn_driver
+  hayabusa2_driver
+  isis_ideal_driver
+  juno_driver
   lro_driver
-  mdis_driver
+  mess_driver
+  mex_driver
   mro_driver
+  nh_driver
+  ody_driver
+  selene_driver
+  tgo_driver
+  viking_driver
+  voyager_driver
   util
-
-.. autofunction:: ale.drivers.__init__.load
diff --git a/docs/source/library/python/isis_ideal_driver.rst b/docs/source/library/python/isis_ideal_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..8df9f48152fa9b368c598238554467019f5382cc
--- /dev/null
+++ b/docs/source/library/python/isis_ideal_driver.rst
@@ -0,0 +1,11 @@
+:mod:`isis_ideal_drivers` --- ISIS Ideal Camera Driver Classes
+==============================================================
+
+The :mod:`ale.drivers.isis_ideal_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.isis_ideal_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/docs/source/library/python/juno_driver.rst b/docs/source/library/python/juno_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..709f2a79ccf7b75629cc7570c70eb07231ff134f
--- /dev/null
+++ b/docs/source/library/python/juno_driver.rst
@@ -0,0 +1,11 @@
+:mod:`juno_drivers` --- Juno Driver Classes
+===========================================
+
+The :mod:`ale.drivers.juno_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.juno_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/docs/source/library/python/lro_driver.rst b/docs/source/library/python/lro_driver.rst
index 6657b0223eb73dc93c6c765fe22a34525b456391..aa48e7789e1eddc855c5f06de84a772c7e0c2d94 100644
--- a/docs/source/library/python/lro_driver.rst
+++ b/docs/source/library/python/lro_driver.rst
@@ -1,7 +1,7 @@
-:mod:`lro_driver` --- LRO Driver Classes
-============================================
+:mod:`lro_drivers` --- LRO Driver Classes
+=========================================
 
-The :mod:`ale.drivers.lro_driver` module
+The :mod:`ale.drivers.lro_drivers` module
 
 .. versionadded:: 0.1.0
 
diff --git a/docs/source/library/python/mdis_driver.rst b/docs/source/library/python/mess_driver.rst
similarity index 82%
rename from docs/source/library/python/mdis_driver.rst
rename to docs/source/library/python/mess_driver.rst
index f6c0a967c66656c98b43c977898c92b4a89608b4..2b58b13f0724c8f72e4e36296fd657cac882b2de 100644
--- a/docs/source/library/python/mdis_driver.rst
+++ b/docs/source/library/python/mess_driver.rst
@@ -1,4 +1,4 @@
-:mod:`mdis_driver` --- MDIS Driver Classes
+:mod:`mess_drivers` --- MDIS Driver Classes
 ============================================
 
 The :mod:`ale.drivers.mess_drivers` module
diff --git a/docs/source/library/python/mex_driver.rst b/docs/source/library/python/mex_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..0a72b57305fe84934cc600613d671e074f9e141c
--- /dev/null
+++ b/docs/source/library/python/mex_driver.rst
@@ -0,0 +1,11 @@
+:mod:`mex_drivers` --- Mars Express Driver Classes
+==================================================
+
+The :mod:`ale.drivers.mex_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.mex_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/docs/source/library/python/mro_driver.rst b/docs/source/library/python/mro_driver.rst
index e29fab580789d9cd6956509a6f9f2e44278eddc4..3445a376f92f87e08e3b021f9a7c64e867944aec 100644
--- a/docs/source/library/python/mro_driver.rst
+++ b/docs/source/library/python/mro_driver.rst
@@ -1,4 +1,4 @@
-:mod:`mro_driver` --- MRO Driver Classes
+:mod:`mro_drivers` --- MRO Driver Classes
 ============================================
 
 The :mod:`ale.drivers.mro_drivers` module
diff --git a/docs/source/library/python/nh_driver.rst b/docs/source/library/python/nh_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5baa2e2f1e909848f766190063255ec94d7212db
--- /dev/null
+++ b/docs/source/library/python/nh_driver.rst
@@ -0,0 +1,11 @@
+:mod:`nh_drivers` --- New Horizons Driver Classes
+=================================================
+
+The :mod:`ale.drivers.nh_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.nh_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/docs/source/library/python/ody_driver.rst b/docs/source/library/python/ody_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e4b6ab248455fb68511792cfbd555b6d76516838
--- /dev/null
+++ b/docs/source/library/python/ody_driver.rst
@@ -0,0 +1,11 @@
+:mod:`ody_drivers` --- Odyssey Driver Classes
+=============================================
+
+The :mod:`ale.drivers.ody_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.ody_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/docs/source/library/python/selene_driver.rst b/docs/source/library/python/selene_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..1c7dc3e9412d742dd2d50288e6ecbb086b82218d
--- /dev/null
+++ b/docs/source/library/python/selene_driver.rst
@@ -0,0 +1,11 @@
+:mod:`selene_drivers` --- Selene Driver Classes
+================================================
+
+The :mod:`ale.drivers.selene_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.selene_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/docs/source/library/python/tgo_driver.rst b/docs/source/library/python/tgo_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..0bb9ed10f3c408e0c103bca64e5ad5c6c5e74837
--- /dev/null
+++ b/docs/source/library/python/tgo_driver.rst
@@ -0,0 +1,11 @@
+:mod:`tgo_drivers` --- Trace Gas Oribiter Driver Classes
+========================================================
+
+The :mod:`ale.drivers.tgo_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.tgo_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/docs/source/library/python/viking_driver.rst b/docs/source/library/python/viking_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..4948c2f60cce52f674ef4e38bb6a3f16e5cfb6aa
--- /dev/null
+++ b/docs/source/library/python/viking_driver.rst
@@ -0,0 +1,11 @@
+:mod:`viking_drivers` --- Viking Driver Classes
+===============================================
+
+The :mod:`ale.drivers.viking_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.viking_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/docs/source/library/python/voyager_driver.rst b/docs/source/library/python/voyager_driver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..0e1ed34136555329bda13676631e1bbdd30c3edb
--- /dev/null
+++ b/docs/source/library/python/voyager_driver.rst
@@ -0,0 +1,11 @@
+:mod:`voyager_drivers` --- Voyager Driver Classes
+=================================================
+
+The :mod:`ale.drivers.voyager_drivers` module
+
+.. versionadded:: 0.8.1
+
+.. automodule:: ale.drivers.voyager_drivers
+   :synopsis:
+   :members:
+   :show-inheritance:
diff --git a/include/ale/InterpUtils.h b/include/ale/InterpUtils.h
index f0e9099f9eecbaa02f7d34216c38517575201ea8..a9d465cf69c2c8f22d98a45b03f73485e63fdd60 100644
--- a/include/ale/InterpUtils.h
+++ b/include/ale/InterpUtils.h
@@ -24,6 +24,7 @@ namespace ale {
 
   /**
    * Linearly interpolate between two values.
+   *
    * @param x The first value.
    * @param y The second value.
    * @param t The distance to interpolate. 0 is x and 1 is y.
@@ -32,6 +33,7 @@ namespace ale {
 
   /**
    * Linearly interpolate between two vectors.
+   *
    * @param x The first vectors.
    * @param y The second vectors.
    * @param t The distance to interpolate. 0 is x and 1 is y.
@@ -42,6 +44,7 @@ namespace ale {
 
   /**
    * Compute the index of the first time to use when interpolating at a given time.
+   *
    * @param times The ordered vector of times to search. Must have at least 2 times.
    * @param interpTime The time to search for the interpolation index of.
    * @return int The index of the time that comes before interpTime. If there is
diff --git a/include/ale/Load.h b/include/ale/Load.h
index b9f0bbc7cc70a0c163e97516cf29c2db0a4b2e5e..56b5be1e285a91ca1f8a56d535f59d9730b678c8 100644
--- a/include/ale/Load.h
+++ b/include/ale/Load.h
@@ -29,9 +29,23 @@ namespace ale {
   std::string loads(std::string filename, std::string props="", std::string formatter="usgscsm", bool verbose=true);
 
   /**
-   * Load all of the metadata fro an image into a JSON ISD.
+   * Load all of the metadata for an image into a JSON ISD.
    * This method is a convenience wrapper around the loads method that parses the
    * string output of loads into a JSON object.
+   *
+   * @param filename The filename of the image to load metadata for
+   * @param props A JSON formatted properties string to pass to the Python drivers.
+   *              Users can specify certain properties that the drivers will use.
+   *              Currently kernels and nadir properties are allowed. See the
+   *              data_naif driver mix-in for details.
+   * @param formatter A string specifying the format of the output ISD string.
+   *                  Currently supported formatters are isis, usgscsm, and ale.
+   *                  The isis and usgscsm formatters will be deprecated in the future.
+   * @param verbose A flag to output what the load function is attempting to do.
+   *                If set to true, information about the drivers load attempts
+   *                to use will be output to standard out.
+   *
+   * @returns A string containing a JSON formatted ISD for the image.
    */
   nlohmann::json load(std::string filename, std::string props="", std::string formatter="usgscsm", bool verbose=true);
 }
diff --git a/include/ale/Rotation.h b/include/ale/Rotation.h
index 3e64cc04a018164375b35c60495f4605808347f6..5b280317172c1cef7bcd1775e35deeb90c7d3d11 100644
--- a/include/ale/Rotation.h
+++ b/include/ale/Rotation.h
@@ -18,20 +18,24 @@ namespace ale {
        * Construct a default identity rotation.
        */
       Rotation();
+      
       /**
        * Construct a rotation from a quaternion
+       *
        * @param w The scalar component of the quaternion.
        * @param x The x value of the vector component of the quaternion.
        * @param y The y value of the vector component of the quaternion.
        * @param z The z value of the vector component of the quaternion.
        */
       Rotation(double w, double x, double y, double z);
+
       /**
        * Construct a rotation from a rotation matrix.
        *
        * @param matrix The rotation matrix in row-major order.
        */
       Rotation(const std::vector<double>& matrix);
+
       /**
        * Construct a rotation from a set of Euler angle rotations.
        *
@@ -40,6 +44,7 @@ namespace ale {
        *             0 is X, 1 is Y, and 2 is Z.
        */
       Rotation(const std::vector<double>& angles, const std::vector<int>& axes);
+
       /**
        * Construct a rotation from a rotation about an axis.
        *
@@ -63,12 +68,14 @@ namespace ale {
        * @return The rotation as a scalar-first quaternion (w, x, y, z).
        */
       std::vector<double> toQuaternion() const;
+
       /**
        * The rotation as a rotation matrix.
        *
        * @return The rotation as a rotation matrix in row-major order.
        */
       std::vector<double> toRotationMatrix() const;
+
       /**
        * Create a state rotation matrix from the rotation and an angula velocity.
        *
@@ -77,6 +84,7 @@ namespace ale {
        * @return The state rotation matrix in row-major order.
        */
       std::vector<double> toStateRotationMatrix(const Vec3d &av) const;
+
       /**
        * The rotation as Euler angles.
        *
@@ -85,6 +93,7 @@ namespace ale {
        * @return The rotations about the axes in radians.
        */
       std::vector<double> toEuler(const std::vector<int>& axes) const;
+
       /**
        * The rotation as a rotation about an axis.
        *
@@ -104,16 +113,19 @@ namespace ale {
       Vec3d operator()(const Vec3d &av) const;
 
       State operator()(const State &state, const Vec3d& av = Vec3d(0.0, 0.0, 0.0)) const;
+
       /**
        * Get the inverse rotation.
        */
       Rotation inverse() const;
+
       /**
        * Chain this rotation with another rotation.
        *
        * Rotations are sequenced right to left.
        */
       Rotation operator*(const Rotation& rightRotation) const;
+
       /**
        * Interpolate between this rotation and another rotation.
        *
diff --git a/include/ale/States.h b/include/ale/States.h
index bbe7575154bd4b9ff17107cacc8cf486309962fd..5c90994fd7cc7e34573560ef6337ff55116f48ca 100644
--- a/include/ale/States.h
+++ b/include/ale/States.h
@@ -64,17 +64,17 @@ namespace ale {
       int getReferenceFrame() const; //! Returns reference frame as NAIF ID
       bool hasVelocity() const; //! Returns true if any velocities have been provided
 
-    /**
-     * Returns a single state by interpolating state.
-     * If the Cache has been minimized, a cubic hermite is used to interpolate the
-     * position and velocity over the reduced cache.
-     * If not, a standard lagrange interpolation will be done.
-     *
-     * @param time Time to get a value at
-     * @param interp Interpolation type to use. Will be ignored if cache is minimized.
-     *
-     * @return State
-     */
+      /**
+       * Returns a single state by interpolating state.
+       * If the Cache has been minimized, a cubic hermite is used to interpolate the
+       * position and velocity over the reduced cache.
+       * If not, a standard lagrange interpolation will be done.
+       *
+       * @param time Time to get a value at
+       * @param interp Interpolation type to use. Will be ignored if cache is minimized.
+       *
+       * @return State
+       */
       State getState(double time, PositionInterpolation interp=LINEAR) const;
 
       /** Gets a position at a single time. Operates the same way as getState() **/
@@ -89,33 +89,33 @@ namespace ale {
       /** Returns the last ephemeris time **/
       double getStopTime();
 
-    /**
-     * Perform a cache reduction. After running this, getStates(), getPositions(),
-     * and getVelocities() will return vectors of reduced size, and getState(),
-     * getPosition(), and getVelocity() will
-     * returns values interpolated over the reduced cache using a cubic hermite spline
-     *
-     * Adapted from Isis::SpicePosition::reduceCache().
-     *
-     * @param tolerance Maximum error between hermite approximation and original value.
-     */
+      /**
+       * Perform a cache reduction. After running this, getStates(), getPositions(),
+       * and getVelocities() will return vectors of reduced size, and getState(),
+       * getPosition(), and getVelocity() will
+       * returns values interpolated over the reduced cache using a cubic hermite spline
+       *
+       * Adapted from Isis::SpicePosition::reduceCache().
+       *
+       * @param tolerance Maximum error between hermite approximation and original value.
+       */
       States minimizeCache(double tolerance=0.01);
 
     private:
 
-    /**
-     * Calculates the points (indicies) which need to be kept for the hermite spline to
-     * interpolate between to mantain a maximum error of tolerance.
-     *
-     * Adapted from Isis::SpicePosition::HermiteIndices.
-     *
-     * @param tolerance Maximum error between hermite approximation and original value.
-     * @param indexList The list of indicies that need to be kept.
-     * @param baseTime Scaled base time for fit
-     * @param timeScale Time scale for fit.
-     *
-     * @return std::vector<int>
-     */
+      /**
+       * Calculates the points (indicies) which need to be kept for the hermite spline to
+       * interpolate between to mantain a maximum error of tolerance.
+       *
+       * Adapted from Isis::SpicePosition::HermiteIndices.
+       *
+       * @param tolerance Maximum error between hermite approximation and original value.
+       * @param indexList The list of indicies that need to be kept.
+       * @param baseTime Scaled base time for fit
+       * @param timeScale Time scale for fit.
+       *
+       * @return std::vector<int>
+       */
       std::vector<int> hermiteIndices(double tolerance, std::vector <int> indexList,
                                       double baseTime, double timeScale);
       std::vector<State> m_states; //! Represent as states internally to keep pos, vel together
diff --git a/src/Isd.cpp b/src/Isd.cpp
index e3b2876596dedb8a2bf48c8f596149149d7e4524..9e64ff47ed72e686f9fb753c7f7cbcb0b4c54829 100644
--- a/src/Isd.cpp
+++ b/src/Isd.cpp
@@ -18,7 +18,14 @@ ale::Isd::Isd(std::string isd_file) {
   starting_ephemeris_time = getStartingTime(isd);
   center_ephemeris_time = getCenterTime(isd);
 
-  line_scan_rate = getLineScanRate(isd);
+  try {
+    line_scan_rate = getLineScanRate(isd);
+  } catch (...) {
+    // Framers do not deal with line scan rates
+    // This is assuming that we may be dealing with a framer rather than
+    // a malformed ISD
+    line_scan_rate = {{}};
+  }
 
   detector_sample_summing = getSampleSumming(isd);
   detector_line_summing = getLineSumming(isd);
diff --git a/src/Util.cpp b/src/Util.cpp
index 60c448f0c2e5750d96b0be86da1c3d017763eb09..d62a5ae5311977c4e0d9ef136c6884ed9fbf98a8 100644
--- a/src/Util.cpp
+++ b/src/Util.cpp
@@ -148,8 +148,7 @@ std::vector<std::vector<double>> getLineScanRate(json isd) {
       lines.push_back(scanRate.get<std::vector<double>>());
     }
   } catch (...) {
-    throw std::runtime_error("Could not parse the integration start lines in "
-                             "the integration time table.");
+    throw std::runtime_error("Could not parse the line scan rate from the isd.");
   }
   return lines;
 }
diff --git a/tests/ctests/IsdTests.cpp b/tests/ctests/IsdTests.cpp
index b76070bc2c627641457a11b52ec3412fc01498e9..23fe47737d557a42f3838b261eea5d57aced44e9 100644
--- a/tests/ctests/IsdTests.cpp
+++ b/tests/ctests/IsdTests.cpp
@@ -764,10 +764,10 @@ TEST(Isd, BadLineScanRate) {
     FAIL() << "Expected an exception to be thrown";
   }
   catch(std::exception &e) {
-    ASSERT_EQ(std::string(e.what()), "Could not parse the integration start lines in the integration time table.");
+    ASSERT_EQ(std::string(e.what()), "Could not parse the line scan rate from the isd.");
   }
   catch(...) {
-    FAIL() << "Expected an Excpetion with message: \"Could not parse the integration start lines in the integration time table.\"";
+    FAIL() << "Expected an Excpetion with message: \"Could not parse the line scan rate from the isd.\"";
   }
 }
 
diff --git a/tests/pytests/data/isds/cassiniiss_isd.json b/tests/pytests/data/isds/cassiniiss_isd.json
index 78ae8e55c4fbfe6827a164f0c341c9d937cae5dc..e289c471695c115c13c3594186ede458accd53fe 100644
--- a/tests/pytests/data/isds/cassiniiss_isd.json
+++ b/tests/pytests/data/isds/cassiniiss_isd.json
@@ -216,7 +216,7 @@
     "unit": "km"
   },
   "instrument_pointing": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "time_dependent_frames": [
       -82000,
       1
@@ -235,7 +235,7 @@
         -0.4979453636940545
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         -0.0007574572640014708,
         -0.0003505925165897519,
@@ -260,7 +260,7 @@
     ]
   },
   "body_rotation": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "time_dependent_frames": [
       10040,
       1
@@ -279,7 +279,7 @@
         0.8657572318545625
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         4.544323197605555e-06,
         3.902625629848413e-06,
@@ -288,7 +288,7 @@
     ]
   },
   "instrument_position": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "spk_table_start_time": 376938208.24072826,
     "spk_table_end_time": 376938208.24072826,
     "spk_table_original_size": 1,
@@ -311,7 +311,7 @@
     ]
   },
   "sun_position": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "spk_table_start_time": 376938208.24072826,
     "spk_table_end_time": 376938208.24072826,
     "spk_table_original_size": 1,
diff --git a/tests/pytests/data/isds/ctx_isd.json b/tests/pytests/data/isds/ctx_isd.json
index 22fdae61c32aec576281e8d279103b8f5946a2dd..4ff7e1e6d2cfec97a262c03059ed5e97fb5ec9c3 100644
--- a/tests/pytests/data/isds/ctx_isd.json
+++ b/tests/pytests/data/isds/ctx_isd.json
@@ -212,7 +212,7 @@
         "unit": "km"
     },
     "instrument_pointing": {
-        "reference_frame" : 1, 
+        "reference_frame" : 1,
         "time_dependent_frames": [
             -74000,
             -74900,
@@ -267,7 +267,7 @@
                 0.8549121108185723
             ]
         ],
-        "angular_velocity": [
+        "angular_velocities": [
             [
                 -0.0006409728984903079,
                 0.0005054077299115119,
@@ -319,7 +319,7 @@
         ]
     },
     "body_rotation": {
-        "reference_frame" : 1, 
+        "reference_frame" : 1,
         "time_dependent_frames": [
             10014,
             1
@@ -373,7 +373,7 @@
                 0.4449034055807993
             ]
         ],
-        "angular_velocity": [
+        "angular_velocities": [
             [
                 3.16238646979841e-05,
                 -2.880432898124293e-05,
@@ -407,7 +407,7 @@
         ]
     },
     "instrument_position": {
-        "reference_frame" : 1, 
+        "reference_frame" : 1,
         "spk_table_start_time": 297088762.24158406,
         "spk_table_end_time": 297088762.9923841,
         "spk_table_original_size": 6,
@@ -485,7 +485,7 @@
         ]
     },
     "sun_position": {
-        "reference_frame" : 1, 
+        "reference_frame" : 1,
         "spk_table_start_time": 297088762.61698407,
         "spk_table_end_time": 297088762.61698407,
         "spk_table_original_size": 1,
diff --git a/tests/pytests/data/isds/dawnfc_isd.json b/tests/pytests/data/isds/dawnfc_isd.json
index 643c73ff5e9ea29375f9a829abea3e58dd9af364..56f2753e4b2f40b9d23219cd64048ef46be96872 100644
--- a/tests/pytests/data/isds/dawnfc_isd.json
+++ b/tests/pytests/data/isds/dawnfc_isd.json
@@ -167,7 +167,7 @@
         -0.8240749322251953
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         -2.0163095864499935e-05,
         2.0665280555081777e-08,
@@ -210,7 +210,7 @@
         0.6504211272382237
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         2.770977343153026e-05,
         -7.064167352871139e-05,
@@ -242,7 +242,7 @@
     ]
   },
   "sun_position": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "spk_table_start_time": 488002614.62294483,
     "spk_table_end_time": 488002614.62294483,
     "spk_table_original_size": 1,
diff --git a/tests/pytests/data/isds/kaguyami_isd.json b/tests/pytests/data/isds/kaguyami_isd.json
index da5cff23dc7433d095f4a9f554fbca3f87c50bc1..d5217c172df4fc2339263902ac94738e14948699 100644
--- a/tests/pytests/data/isds/kaguyami_isd.json
+++ b/tests/pytests/data/isds/kaguyami_isd.json
@@ -162,7 +162,7 @@
     "unit": "km"
   },
   "instrument_pointing": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "time_dependent_frames": [
       -131000,
       1
@@ -279,7 +279,7 @@
         0.6820651599944132
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         -0.0009538064837455751,
         -0.0012094992518424988,
@@ -374,7 +374,7 @@
     ]
   },
   "body_rotation": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "time_dependent_frames": [
       10020,
       1
@@ -491,7 +491,7 @@
         -0.14114626872597225
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         4.161664897473834e-08,
         -1.004371630350468e-06,
@@ -570,7 +570,7 @@
     ]
   },
   "instrument_position": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "spk_table_start_time": 261664552.50899568,
     "spk_table_end_time": 261664564.98897073,
     "spk_table_original_size": 15,
@@ -747,7 +747,7 @@
     ]
   },
   "sun_position": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "spk_table_start_time": 261664558.7489832,
     "spk_table_end_time": 261664558.7489832,
     "spk_table_original_size": 1,
@@ -770,4 +770,3 @@
     ]
   }
 }
-
diff --git a/tests/pytests/data/isds/kaguyatc_isd.json b/tests/pytests/data/isds/kaguyatc_isd.json
index 9c07ca04ce53522e27466f3e2a606c3c4e9a23f3..b66902169abe2aff514b749f727dc8c13d6d59e3 100644
--- a/tests/pytests/data/isds/kaguyatc_isd.json
+++ b/tests/pytests/data/isds/kaguyatc_isd.json
@@ -246,7 +246,7 @@
         -0.968551426254611
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         0.0030447825014591214,
         0.00010000000000000005,
@@ -350,7 +350,7 @@
         -0.290467693256969
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         5.82758225576212e-08,
         -1.019441640177111e-06,
@@ -462,7 +462,7 @@
     ]
   },
   "sun_position": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "spk_table_start_time": 292234261.12293595,
     "spk_table_end_time": 292234261.12293595,
     "spk_table_original_size": 1,
diff --git a/tests/pytests/data/isds/lrolroc_isd.json b/tests/pytests/data/isds/lrolroc_isd.json
index 256820dd30d42a0de983c5243f0bd271909987ea..fa01ddaeae42903b798026af98865c049e52363e 100644
--- a/tests/pytests/data/isds/lrolroc_isd.json
+++ b/tests/pytests/data/isds/lrolroc_isd.json
@@ -192,7 +192,7 @@
     "unit": "km"
   },
   "instrument_pointing": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "time_dependent_frames": [
       -85600,
       -85000,
@@ -247,7 +247,7 @@
         0.4625562996626938
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         0.00015796288676771882,
         -0.0007643782570599635,
@@ -295,7 +295,7 @@
     ]
   },
   "body_rotation": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "time_dependent_frames": [
       31006,
       1
@@ -349,7 +349,7 @@
         0.41209238745406124
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         6.23828510009553e-08,
         -1.0257490014652093e-06,
@@ -399,7 +399,7 @@
     ]
   },
   "instrument_position": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "spk_table_start_time": 302228504.36824864,
     "spk_table_end_time": 302228504.7816205,
     "spk_table_original_size": 6,
@@ -477,7 +477,7 @@
     ]
   },
   "sun_position": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "spk_table_start_time": 302228504.5749346,
     "spk_table_end_time": 302228504.5749346,
     "spk_table_original_size": 1,
diff --git a/tests/pytests/data/isds/messmdis_isd.json b/tests/pytests/data/isds/messmdis_isd.json
index 2b0009531dd9b42a607540a147f3e3de5abd0feb..e3d669cdba860a301ed98a069d5068fcb336ff46 100644
--- a/tests/pytests/data/isds/messmdis_isd.json
+++ b/tests/pytests/data/isds/messmdis_isd.json
@@ -227,7 +227,7 @@
     "unit": "km"
   },
   "instrument_pointing": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "time_dependent_frames": [
       -236890,
       -236892,
@@ -249,7 +249,7 @@
         0.27977075522196615
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         0.0003701285091906918,
         -0.001206909830636917,
@@ -274,7 +274,7 @@
     ]
   },
   "body_rotation": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "time_dependent_frames": [
       10011,
       1
@@ -293,7 +293,7 @@
         0.7703286686634552
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         1.1327218036111434e-07,
         -5.824482156869511e-07,
@@ -302,7 +302,7 @@
     ]
   },
   "instrument_position": {
-    "reference_frame" : 1, 
+    "reference_frame" : 1,
     "spk_table_start_time": 483122606.85252464,
     "spk_table_end_time": 483122606.85252464,
     "spk_table_original_size": 1,
diff --git a/tests/pytests/data/isds/mexhrsc_isd.json b/tests/pytests/data/isds/mexhrsc_isd.json
index be7e8d3d1c766605758ff8fb9c95c4c8c56bc5e1..918fd49b854578b2b2fb4e737be8a6eab25e4987 100644
--- a/tests/pytests/data/isds/mexhrsc_isd.json
+++ b/tests/pytests/data/isds/mexhrsc_isd.json
@@ -253,7 +253,7 @@
         -0.7073296578701413
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         0.00035175896960868314,
         0.0010162509530283843,
@@ -358,7 +358,7 @@
         -0.6830672572077882
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         3.162398161515674e-05,
         -2.880303177577331e-05,
@@ -494,4 +494,3 @@
     "reference_frame": 1
   }
 }
-
diff --git a/tests/pytests/data/isds/mexsrc_isd.json b/tests/pytests/data/isds/mexsrc_isd.json
index 7358acede625fd0992b60daad4707345b14e6190..2e05ee12e8f86152b06fa05f73d95cf96ed1d675 100644
--- a/tests/pytests/data/isds/mexsrc_isd.json
+++ b/tests/pytests/data/isds/mexsrc_isd.json
@@ -140,7 +140,7 @@
         -0.8650992796017232
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         -0.00106162784061926,
         -0.00026418932613265307,
@@ -185,7 +185,7 @@
         -0.9468861369123871
       ]
     ],
-    "angular_velocity": [
+    "angular_velocities": [
       [
         3.162434532527514e-05,
         -2.8798992833710347e-05,
@@ -241,4 +241,3 @@
     "reference_frame": 1
   }
 }
-