diff --git a/.kitchen.travis.yml b/.kitchen.travis.yml
deleted file mode 100644
index bbf9c0d..0000000
--- a/.kitchen.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-suites:
-
-  - name: <%= ENV['SUITE'] %>
-    provisioner:
-      pillars-from-files:
-        reclass.sls: tests/pillar/<%= ENV['SUITE'] %>.sls
diff --git a/.travis.yml b/.travis.yml
index 79c2532..2e40756 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,23 +17,24 @@
   - bundle install
 
 env:
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=class_mapping
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=class_mapping
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=generate_multi
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=generate_multi
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=generate_single
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=generate_single
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=storage_local
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=storage_local
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=storage_nodes_uri
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=storage_nodes_uri
+    - PLATFORM=trevorj/salty-whales:trusty SUITE=class-mapping
+    - PLATFORM=trevorj/salty-whales:xenial SUITE=class-mapping
+    - PLATFORM=trevorj/salty-whales:trusty SUITE=generate-multi
+    - PLATFORM=trevorj/salty-whales:xenial SUITE=generate-multi
+    - PLATFORM=trevorj/salty-whales:trusty SUITE=generate-single
+    - PLATFORM=trevorj/salty-whales:xenial SUITE=generate-single
+    - PLATFORM=trevorj/salty-whales:trusty SUITE=storage-local
+    - PLATFORM=trevorj/salty-whales:xenial SUITE=storage-local
+    - PLATFORM=trevorj/salty-whales:trusty SUITE=storage-nodes-uri
+    - PLATFORM=trevorj/salty-whales:xenial SUITE=storage-nodes-uri
 
 before_script:
   - set -o pipefail
   - make test | tail
 
 script:
-  - KITCHEN_LOCAL_YAML=.kitchen.travis.yml bundle exec kitchen test -t tests/integration
+  - test ! -e .kitchen.yml || bundle exec kitchen converge ${SUITE} || true
+  - test ! -e .kitchen.yml || bundle exec kitchen verify ${SUITE} -t tests/integration
 
 notifications:
   webhooks:
diff --git a/_modules/reclass.py b/_modules/reclass.py
index f15eb44..3c06da1 100644
--- a/_modules/reclass.py
+++ b/_modules/reclass.py
@@ -66,6 +66,7 @@
 
     # read classes
     for class_name, params in classes.items():
+        LOG.debug("Processing:{}".format(params['file']))
         with open(params['file'], 'r') as f:
             # read raw data
             raw = f.read()
@@ -563,33 +564,33 @@
     node = node_get(name=name)
     if node.has_key('Error'):
         return {'Error': 'Error in retrieving node'}
-    
+
     for name, values in node.items():
         param = values.get('parameters', {})
         path = values.get('path')
         cluster = values.get('cluster')
         environment = values.get('environment')
         write_class = values.get('classes', [])
-        
+
     if parameters:
         param.update(parameters)
-    
+
     if classes:
         for classe in classes:
             if not classe in write_class:
                 write_class.append(classe)
-    
+
     node_meta = _get_node_meta(name, cluster, environment, write_class, param)
     LOG.debug(node_meta)
-    
+
     if path == None:
         file_path = os.path.join(_get_nodes_dir(), name + '.yml')
     else:
         file_path = os.path.join(_get_nodes_dir(), path, name + '.yml')
-    
+
     with open(file_path, 'w') as node_file:
         node_file.write(yaml.safe_dump(node_meta, default_flow_style=False))
-    
+
     return node_get(name)
 
 
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index 3f42101..9451611 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -110,7 +110,7 @@
 }
 
 salt_run() {
-    [ -e ${VEN_DIR}/bin/activate ] && source ${VENV_DIR}/bin/activate
+    [ -e ${VENV_DIR}/bin/activate ] && source ${VENV_DIR}/bin/activate
     salt-call ${SALT_OPTS} $*
 }
 
