diff --git a/.github/workflows/cibuild.yml b/.github/workflows/cibuild.yml
index d1d8ba13..e958934c 100644
--- a/.github/workflows/cibuild.yml
+++ b/.github/workflows/cibuild.yml
@@ -39,7 +39,7 @@ jobs:
     strategy:
       fail-fast: true
       matrix:
-        python-version: ["3.7","3.8","3.9","3.10","3.11"]
+        python-version: ["3.8","3.9","3.10","3.11","3.12"]
         package: [caom2, caom2utils, caom2repo]
         exclude:
           # temporary since hdf5 is not working yet
diff --git a/caom2/caom2/chunk.py b/caom2/caom2/chunk.py
index a06e124f..43c67360 100644
--- a/caom2/caom2/chunk.py
+++ b/caom2/caom2/chunk.py
@@ -2,7 +2,7 @@
 # ******************  CANADIAN ASTRONOMY DATA CENTRE  *******************
 # *************  CENTRE CANADIEN DE DONNÉES ASTRONOMIQUES  **************
 #
-#  (c) 2022.                            (c) 2022.
+#  (c) 2024.                            (c) 2024.
 #  Government of Canada                 Gouvernement du Canada
 #  National Research Council            Conseil national de recherches
 #  Ottawa, Canada, K1A 0R6              Ottawa, Canada, K1A 0R6
@@ -82,31 +82,59 @@
 
 class ProductType(OrderedEnum):
     """
-    SCIENCE: "science"
-    CALIBRATION: "calibration"
-    PREVIEW: "preview"
-    INFO: "info"
-    NOISE: "noise"
-    WEIGHT: "weight"
-    AUXILIARY: "auxiliary"
-    THUMBNAIL: "thumbnail"
-    BIAS: "bias"
-    DARK: "dark"
-    FLAT: "flat"
-    WAVECAL: "wavecal"
+    Subset of IVOA DataLink terms at:
+        https://www.ivoa.net/rdf/datalink/core/2022-01-27/datalink.html
+
+    THIS = "this"
+    AUXILIARY = "auxiliary"
+    BIAS = 'bias'
+    CALIBRATION = 'calibration'
+    CODERIVED = 'coderived'
+    DARK = 'dark'
+    DOCUMENTATION = 'documentation'
+    ERROR = 'error'
+    FLAT = 'flat'
+    NOISE = 'noise'
+    PREVIEW = 'preview'
+    PREVIEW_IMAGE = 'preview-image'
+    PREVIEW_PLOT = 'preview-plot'
+    THUMBNAIL = 'thumbnail'
+    WEIGHT = 'weight'
+
     """
-    SCIENCE = "science"
-    CALIBRATION = "calibration"
-    PREVIEW = "preview"
-    INFO = "info"
-    NOISE = "noise"
-    WEIGHT = "weight"
+
+    THIS = "this"
+
     AUXILIARY = "auxiliary"
-    THUMBNAIL = "thumbnail"
-    BIAS = "bias"
-    DARK = "dark"
-    FLAT = "flat"
-    WAVECAL = "wavecal"
+    BIAS = 'bias'
+    CALIBRATION = 'calibration'
+    CODERIVED = 'coderived'
+    DARK = 'dark'
+    DOCUMENTATION = 'documentation'
+    ERROR = 'error'
+    FLAT = 'flat'
+    NOISE = 'noise'
+    PREVIEW = 'preview'
+    PREVIEW_IMAGE = 'preview-image'
+    PREVIEW_PLOT = 'preview-plot'
+    THUMBNAIL = 'thumbnail'
+    WEIGHT = 'weight'
+
+    # DataLink terms explicitly not included
+    # counterpart
+    # cutout
+    # derivation
+    # detached - header
+    # package
+    # proc
+    # progenitor
+
+    # CAOM specific terms public
+    SCIENCE = 'science'  # this
+
+    # deprecated
+    # INFO = 'info'
+    # CATALOG = 'catalog'
 
 
 __all__ = ['ProductType', 'Chunk', 'ObservableAxis', 'SpatialWCS',
diff --git a/caom2/caom2/tests/test_chunk.py b/caom2/caom2/tests/test_chunk.py
index 28bf84da..aaa8d923 100644
--- a/caom2/caom2/tests/test_chunk.py
+++ b/caom2/caom2/tests/test_chunk.py
@@ -2,7 +2,7 @@
 # ******************  CANADIAN ASTRONOMY DATA CENTRE  *******************
 # *************  CENTRE CANADIEN DE DONNÉES ASTRONOMIQUES  **************
 #
-#  (c) 2022.                            (c) 2022.
+#  (c) 2024.                            (c) 2024.
 #  Government of Canada                 Gouvernement du Canada
 #  National Research Council            Conseil national de recherches
 #  Ottawa, Canada, K1A 0R6              Ottawa, Canada, K1A 0R6
@@ -92,10 +92,10 @@ def test_all(self):
         self.assertEqual(chunk.ProductType[
                              chunk.ProductType.SCIENCE.name].value, "science")
 
+        self.assertEqual(chunk.ProductType.THIS.value, "this")
         self.assertEqual(chunk.ProductType.SCIENCE.value, "science")
         self.assertEqual(chunk.ProductType.CALIBRATION.value, "calibration")
         self.assertEqual(chunk.ProductType.PREVIEW.value, "preview")
-        self.assertEqual(chunk.ProductType.INFO.value, "info")
         self.assertEqual(chunk.ProductType.NOISE.value, "noise")
         self.assertEqual(chunk.ProductType.WEIGHT.value, "weight")
         self.assertEqual(chunk.ProductType.AUXILIARY.value, "auxiliary")
@@ -103,7 +103,10 @@ def test_all(self):
         self.assertEqual(chunk.ProductType.BIAS.value, "bias")
         self.assertEqual(chunk.ProductType.DARK.value, "dark")
         self.assertEqual(chunk.ProductType.FLAT.value, "flat")
-        self.assertEqual(chunk.ProductType.WAVECAL.value, "wavecal")
+        self.assertEqual(chunk.ProductType.CODERIVED.value, "coderived")
+        self.assertEqual(chunk.ProductType.DOCUMENTATION.value, "documentation")
+        self.assertEqual(chunk.ProductType.PREVIEW_IMAGE.value, "preview-image")
+        self.assertEqual(chunk.ProductType.PREVIEW_PLOT.value, "preview-plot")
 
 
 class TestChunk(unittest.TestCase):
diff --git a/caom2/setup.cfg b/caom2/setup.cfg
index 8fb39ff1..b9911882 100644
--- a/caom2/setup.cfg
+++ b/caom2/setup.cfg
@@ -36,7 +36,7 @@ url = http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/caom2
 edit_on_github = False
 github_project = opencadc/caom2tools
 # version should be PEP386 compatible (http://www.python.org/dev/peps/pep-0386)
-version = 2.6
+version = 2.6.1
 
 [options]
 install_requires =
diff --git a/caom2/setup.py b/caom2/setup.py
index cd89a16e..f5529368 100755
--- a/caom2/setup.py
+++ b/caom2/setup.py
@@ -85,7 +85,7 @@ def run_tests(self):
       use_2to3=False,
       setup_requires=['pytest-runner'],
       entry_points=entry_points,
-      python_requires='>=3.7, <4',
+      python_requires='>=3.8, <4',
       packages=find_packages(),
       package_data={PACKAGENAME: ['data/*', 'tests/data/*', '*/data/*', '*/tests/data/*']},
       classifiers=[
diff --git a/caom2/tox.ini b/caom2/tox.ini
index 473d01cf..7953a3d7 100644
--- a/caom2/tox.ini
+++ b/caom2/tox.ini
@@ -5,7 +5,7 @@ name = caom2
 
 [tox]
 envlist =
-    py{27,34,35,36,37,38,39,310}
+    py{38,39,310,311,312}
 requires =
     pip >= 19.3.1
 
diff --git a/caom2repo/setup.py b/caom2repo/setup.py
index b1c264e1..b9ff9a87 100755
--- a/caom2repo/setup.py
+++ b/caom2repo/setup.py
@@ -108,7 +108,7 @@ def run(self):
       use_2to3=False,
       setup_requires=['pytest-runner'],
       entry_points=entry_points,
-      python_requires='>=3.7, <4',
+      python_requires='>=3.8, <4',
       packages=find_packages(),
       package_data={PACKAGENAME: ['data/*', 'tests/data/*', '*/data/*', '*/tests/data/*']},
       classifiers=[
diff --git a/caom2utils/caom2utils/tests/test_fits2caom2.py b/caom2utils/caom2utils/tests/test_fits2caom2.py
index 99370073..226e15c9 100755
--- a/caom2utils/caom2utils/tests/test_fits2caom2.py
+++ b/caom2utils/caom2utils/tests/test_fits2caom2.py
@@ -665,7 +665,7 @@ def test_help():
       <caom2:artifacts>
         <caom2:artifact caom2:id="d2893703-b21e-425f-b7d0-ca1f58fdc011">
           <caom2:uri>caom:CGPS/TEST/4axes_obs.fits</caom2:uri>
-          <caom2:productType>info</caom2:productType>
+          <caom2:productType>auxiliary</caom2:productType>
           <caom2:parts>
             <caom2:part caom2:id="d2893703-b21e-425f-b7d0-ca1f58fdc011">
               <caom2:name>0</caom2:name>
@@ -692,7 +692,7 @@ def test_augment_observation():
     test_obs_blueprint.set('Observation.telescope.geoLocationZ', '4741018.33097')
 
     test_obs_blueprint.set('Plane.dataProductType', 'cube')
-    test_obs_blueprint.set('Artifact.productType', 'info')
+    test_obs_blueprint.set('Artifact.productType', 'auxiliary')
     test_obs_blueprint.set('Artifact.releaseType', 'data')
     test_obs_blueprint.set('Plane.calibrationLevel', '2')
     test_fitsparser = FitsParser(sample_file_4axes_obs, test_obs_blueprint)
diff --git a/caom2utils/setup.py b/caom2utils/setup.py
index e44aeaf1..9eaa5778 100755
--- a/caom2utils/setup.py
+++ b/caom2utils/setup.py
@@ -106,7 +106,7 @@ def run(self):
       use_2to3=False,
       setup_requires=['pytest-runner'],
       entry_points=entry_points,
-      python_requires='>=3.7, <4',
+      python_requires='>=3.8, <4',
       packages=find_packages(),
       package_data={PACKAGENAME: ['data/*', 'tests/data/*', '*/data/*', '*/tests/data/*']},
       classifiers=[