move value and item classes to new reclass/values directory
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):