diff --git a/reclass/utils/compitem.py b/reclass/utils/compitem.py
index 0e95d48..2e41f92 100644
--- a/reclass/utils/compitem.py
+++ b/reclass/utils/compitem.py
@@ -4,9 +4,6 @@
 # This file is part of reclass
 #
 
-from reclass.utils.mergeoptions import MergeOptions
-from reclass.utils.dictpath import DictPath
-from reclass.errors import UndefinedVariableError
 
 class CompItem(object):
 
@@ -19,7 +16,6 @@
     def assembleRefs(self, context={}):
         self._refs = []
         self._allRefs = True
-        options = MergeOptions()
         for item in self._items:
             if item.has_references():
                 item.assembleRefs(context)
diff --git a/reclass/utils/listitem.py b/reclass/utils/listitem.py
index 291d16a..ed13257 100644
--- a/reclass/utils/listitem.py
+++ b/reclass/utils/listitem.py
@@ -4,8 +4,6 @@
 # This file is part of reclass
 #
 
-import scaitem
-
 class ListItem(object):
 
     def __init__(self, item):
@@ -40,11 +38,13 @@
         return self._list
 
     def merge_over(self, item, options):
+        from reclass.utils.scaitem import ScaItem
+
         if isinstance(item, ListItem):
             for i in self._list:
                 item._list.append(i)
             return item
-        elif isinstance(item, scaitem.ScaItem):
+        elif isinstance(item, ScaItem):
             if options.allow_list_over_scalar:
                 self._list.insert(0, item.contents())
                 return self
diff --git a/reclass/utils/refitem.py b/reclass/utils/refitem.py
index 70a5b2c..b14514d 100644
--- a/reclass/utils/refitem.py
+++ b/reclass/utils/refitem.py
@@ -4,7 +4,6 @@
 # This file is part of reclass
 #
 
-from reclass.utils.mergeoptions import MergeOptions
 from reclass.utils.dictpath import DictPath
 from reclass.errors import UndefinedVariableError
 
diff --git a/reclass/utils/scaitem.py b/reclass/utils/scaitem.py
index 05fc9a2..b9e49f8 100644
--- a/reclass/utils/scaitem.py
+++ b/reclass/utils/scaitem.py
@@ -4,8 +4,8 @@
 # This file is part of reclass
 #
 
-import dictitem
-import listitem
+from reclass.utils.dictitem import DictItem
+from reclass.utils.listitem import ListItem
 
 class ScaItem(object):
 
@@ -30,12 +30,12 @@
     def merge_over(self, item, options):
         if isinstance(item, ScaItem):
             return self
-        elif isinstance(item, listitem.ListItem):
+        elif isinstance(item, ListItem):
             if options.allow_scalar_over_list:
                 return self
             else:
                 raise TypeError('allow scalar over list = False: cannot merge %s over %s' % (repr(self), repr(item)))
-        elif isinstance(item, dictitem.DictItem):
+        elif isinstance(item, DictItem):
             if options.allow_scalar_over_dict:
                 return self
             else:
