diff --git a/MANIFEST.in b/MANIFEST.in
index 1c1accc..268de42 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -7,6 +7,7 @@
 prune reclass/datatypes/tests
 prune reclass/storage/tests
 prune reclass/utils/tests
+prune reclass/values/tests
 # Exclude "source only" content
 prune doc
 prune examples
diff --git a/reclass/datatypes/parameters.py b/reclass/datatypes/parameters.py
index baa92c3..0ec29e6 100644
--- a/reclass/datatypes/parameters.py
+++ b/reclass/datatypes/parameters.py
@@ -12,10 +12,10 @@
 import types
 from collections import namedtuple
 from reclass.defaults import *
-from reclass.utils.mergeoptions import MergeOptions
 from reclass.utils.dictpath import DictPath
-from reclass.utils.value import Value
-from reclass.utils.valuelist import ValueList
+from reclass.values.mergeoptions import MergeOptions
+from reclass.values.value import Value
+from reclass.values.valuelist import ValueList
 from reclass.errors import InfiniteRecursionError, UndefinedVariableError, InterpolationError
 
 class Parameters(object):
diff --git a/reclass/datatypes/tests/test_parameters.py b/reclass/datatypes/tests/test_parameters.py
index 7dc2d7c..1cc3804 100644
--- a/reclass/datatypes/tests/test_parameters.py
+++ b/reclass/datatypes/tests/test_parameters.py
@@ -9,7 +9,7 @@
 from reclass.datatypes import Parameters
 from reclass.defaults import REFERENCE_SENTINELS, ESCAPE_CHARACTER
 from reclass.errors import InfiniteRecursionError
-from reclass.utils.mergeoptions import MergeOptions
+from reclass.values.mergeoptions import MergeOptions
 import unittest
 try:
     import unittest.mock as mock
diff --git a/reclass/values/__init__.py b/reclass/values/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/reclass/values/__init__.py
diff --git a/reclass/utils/compitem.py b/reclass/values/compitem.py
similarity index 96%
rename from reclass/utils/compitem.py
rename to reclass/values/compitem.py
index a49dfea..50188ef 100644
--- a/reclass/utils/compitem.py
+++ b/reclass/values/compitem.py
@@ -4,7 +4,7 @@
 # This file is part of reclass
 #
 
-from reclass.utils.item import Item
+from item import Item
 
 class CompItem(Item):
 
diff --git a/reclass/utils/dictitem.py b/reclass/values/dictitem.py
similarity index 89%
rename from reclass/utils/dictitem.py
rename to reclass/values/dictitem.py
index f652059..85cbc8c 100644
--- a/reclass/utils/dictitem.py
+++ b/reclass/values/dictitem.py
@@ -4,7 +4,7 @@
 # This file is part of reclass
 #
 
-from reclass.utils.item import Item
+from item import Item
 
 class DictItem(Item):
 
@@ -15,7 +15,7 @@
         return self._dict
 
     def merge_over(self, item, options):
-        from reclass.utils.scaitem import ScaItem
+        from scaitem import ScaItem
 
         if isinstance(item, ScaItem):
             if item.contents() is None or options.allow_dict_over_scalar:
diff --git a/reclass/utils/expitem.py b/reclass/values/expitem.py
similarity index 96%
rename from reclass/utils/expitem.py
rename to reclass/values/expitem.py
index 3798165..fddf0da 100644
--- a/reclass/utils/expitem.py
+++ b/reclass/values/expitem.py
@@ -4,8 +4,8 @@
 # This file is part of reclass
 #
 
+from item import Item
 from reclass.utils.dictpath import DictPath
-from reclass.utils.item import Item
 from reclass.errors import UndefinedVariableError
 
 class ExpItem(Item):
diff --git a/reclass/utils/item.py b/reclass/values/item.py
similarity index 100%
rename from reclass/utils/item.py
rename to reclass/values/item.py
diff --git a/reclass/utils/listitem.py b/reclass/values/listitem.py
similarity index 91%
rename from reclass/utils/listitem.py
rename to reclass/values/listitem.py
index a1c66bc..9cacea1 100644
--- a/reclass/utils/listitem.py
+++ b/reclass/values/listitem.py
@@ -4,7 +4,7 @@
 # This file is part of reclass
 #
 
-from reclass.utils.item import Item
+from item import Item
 
 class ListItem(Item):
 
@@ -18,7 +18,7 @@
         return self._list
 
     def merge_over(self, item, options):
-        from reclass.utils.scaitem import ScaItem
+        from scaitem import ScaItem
 
         if isinstance(item, ListItem):
             for i in self._list:
diff --git a/reclass/utils/mergeoptions.py b/reclass/values/mergeoptions.py
similarity index 100%
rename from reclass/utils/mergeoptions.py
rename to reclass/values/mergeoptions.py
diff --git a/reclass/utils/refitem.py b/reclass/values/refitem.py
similarity index 97%
rename from reclass/utils/refitem.py
rename to reclass/values/refitem.py
index 9e3b2d2..a028908 100644
--- a/reclass/utils/refitem.py
+++ b/reclass/values/refitem.py
@@ -4,8 +4,8 @@
 # This file is part of reclass
 #
 
+from item import Item
 from reclass.utils.dictpath import DictPath
-from reclass.utils.item import Item
 from reclass.errors import UndefinedVariableError
 
 class RefItem(Item):
diff --git a/reclass/utils/scaitem.py b/reclass/values/scaitem.py
similarity index 88%
rename from reclass/utils/scaitem.py
rename to reclass/values/scaitem.py
index 6748945..941e61b 100644
--- a/reclass/utils/scaitem.py
+++ b/reclass/values/scaitem.py
@@ -4,9 +4,7 @@
 # This file is part of reclass
 #
 
-from reclass.utils.dictitem import DictItem
-from reclass.utils.listitem import ListItem
-from reclass.utils.item import Item
+from item import Item
 
 class ScaItem(Item):
 
@@ -17,6 +15,9 @@
         return self._value
 
     def merge_over(self, item, options):
+        from dictitem import DictItem
+        from listitem import ListItem
+
         if isinstance(item, ScaItem):
             return self
         elif isinstance(item, ListItem):
diff --git a/reclass/values/tests/__init__.py b/reclass/values/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/reclass/values/tests/__init__.py
diff --git a/reclass/utils/tests/test_value.py b/reclass/values/tests/test_value.py
similarity index 98%
rename from reclass/utils/tests/test_value.py
rename to reclass/values/tests/test_value.py
index f4ac296..8211dcd 100644
--- a/reclass/utils/tests/test_value.py
+++ b/reclass/values/tests/test_value.py
@@ -9,7 +9,7 @@
 
 import pyparsing as pp
 
-from reclass.utils.value import Value
+from reclass.values.value import Value
 from reclass.defaults import REFERENCE_SENTINELS, \
         PARAMETER_INTERPOLATION_DELIMITER
 from reclass.errors import UndefinedVariableError, \
diff --git a/reclass/utils/value.py b/reclass/values/value.py
similarity index 95%
rename from reclass/utils/value.py
rename to reclass/values/value.py
index d3ea13b..275ab7f 100644
--- a/reclass/utils/value.py
+++ b/reclass/values/value.py
@@ -6,13 +6,13 @@
 
 import pyparsing as pp
 
-from reclass.utils.mergeoptions import MergeOptions
-from reclass.utils.compitem import CompItem
-from reclass.utils.dictitem import DictItem
-from reclass.utils.expitem import ExpItem
-from reclass.utils.listitem import ListItem
-from reclass.utils.refitem import RefItem
-from reclass.utils.scaitem import ScaItem
+from mergeoptions import MergeOptions
+from compitem import CompItem
+from dictitem import DictItem
+from expitem import ExpItem
+from listitem import ListItem
+from refitem import RefItem
+from scaitem import ScaItem
 from reclass.defaults import PARAMETER_INTERPOLATION_DELIMITER, ESCAPE_CHARACTER, REFERENCE_SENTINELS, EXPORT_SENTINELS
 from reclass.errors import *
 
diff --git a/reclass/utils/valuelist.py b/reclass/values/valuelist.py
similarity index 98%
rename from reclass/utils/valuelist.py
rename to reclass/values/valuelist.py
index b630a04..ea3b251 100644
--- a/reclass/utils/valuelist.py
+++ b/reclass/values/valuelist.py
@@ -6,7 +6,7 @@
 
 import copy
 
-from reclass.utils.mergeoptions import MergeOptions
+from mergeoptions import MergeOptions
 
 class ValueList(object):
 
