diff --git a/pykat/SIfloat.py b/pykat/SIfloat.py
index cac016f0623c82601cb7b6c072cb0e3c5b56b010..aa65c9ec2313f68deb721d7508182e61368c5937 100644
--- a/pykat/SIfloat.py
+++ b/pykat/SIfloat.py
@@ -1,3 +1,8 @@
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
 import os
 import re
 import pykat.exceptions as pkex
diff --git a/pykat/colours.py b/pykat/colours.py
index cc65b2f77c41b757c5de407ecd8b7f8ca6315b86..94291cd35ad1ff93bbaac365fe6ca089161ecea6 100644
--- a/pykat/colours.py
+++ b/pykat/colours.py
@@ -4,6 +4,10 @@ Created on Mon Jan 28 10:43:18 2013
 
 @author: Daniel
 """
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
 
 class colours:
     HEADER = '\033[95m'
@@ -19,4 +23,4 @@ class colours:
         self.OKGREEN = ''
         self.WARNING = ''
         self.FAIL = ''
-        self.ENDC = ''
\ No newline at end of file
+        self.ENDC = ''
diff --git a/pykat/commands.py b/pykat/commands.py
index 1ecce9a528b650c2e52697c7e8e41267939e30c5..06988f3d26b0701ebf244c5fa200cecccb74440a 100644
--- a/pykat/commands.py
+++ b/pykat/commands.py
@@ -4,14 +4,18 @@ Created on Mon Jan 28 11:58:09 2013
 
 @author: Daniel
 """
+from __future__ import absolute_import
+from __future__ import division
 from __future__ import print_function
+from __future__ import unicode_literals
+
 import numpy
 from numpy import min,max
 import pykat.external.six as six
 if six.PY2:
 	import exceptions
-from components import *
-from structs import *
+from pykat.components import *
+from pykat.structs import *
 from pykat.param import Param, putter
 import pykat.exceptions as pkex
 from collections import namedtuple
diff --git a/pykat/components.py b/pykat/components.py
index 23f28186663f4ad2507d6cfdad15e0df2bf1bcb9..42d63af071e8b5f903150b3b3581f442089c0b63 100644
--- a/pykat/components.py
+++ b/pykat/components.py
@@ -4,7 +4,10 @@ Created on Mon Jan 28 11:10:01 2013
 
 @author: Daniel
 """
+from __future__ import absolute_import
+from __future__ import division
 from __future__ import print_function
+from __future__ import unicode_literals
 
 from pykat import USE_GUI, HAS_OPTIVIS, NoGUIException
 
diff --git a/pykat/detectors.py b/pykat/detectors.py
index a79b7aae21b4e1c3e6378142de954eba4e2fa686..98c596a76c62c3bdd1632ac1be72e5768b5144b8 100644
--- a/pykat/detectors.py
+++ b/pykat/detectors.py
@@ -4,7 +4,11 @@ Created on Fri Feb 01 0split()9:09:10 2013
 
 @author: Daniel
 """
+from __future__ import absolute_import
+from __future__ import division
 from __future__ import print_function
+from __future__ import unicode_literals
+
 import pykat.external.six as six
 if six.PY2:
 	import exceptions
@@ -13,8 +17,10 @@ from pykat.node_network import *
 from pykat.param import Param, AttrParam
 from pykat.SIfloat import SIfloat
 
-import collections
+import pykat.external.six as six
 import pykat.exceptions as pkex
+
+import collections
 import warnings
 import copy
 
@@ -63,7 +69,7 @@ class BaseDetector(object) :
                         self._alternate_beam.append(False)
                         
                     self._requested_nodes.append(n)
-            elif isinstance(nodes, str):
+            elif isinstance(nodes, six.string_types):
                 # if we don't have a collection
                 if nodes[-1]=='*':
                     self._alternate_beam.append(True)
@@ -151,7 +157,7 @@ class BaseDetector(object) :
     
     def _getScaleCmds(self, rtn):
         if self.scale != None:
-            if isinstance(self.scale, str):
+            if isinstance(self.scale, six.string_types):
                 rtn.append("scale {1} {0}".format(self.name, self.scale))
             elif isinstance(self.scale, (list, tuple)):
                 for s in self.scale:
@@ -383,9 +389,11 @@ class pd(Detector1):
         
         fs = [self.__f1, self.__f2, self.__f3, self.__f4, self.__f5]
         ps = [self.__phi1, self.__phi2, self.__phi3, self.__phi4, self.__phi5]
-        
+
+        print("-------------------------------------------------------")
         for i in range(num_demods):
             f = 'f{0}'.format(i+1)
+            print("i {0} fs {1} f {2} keys {3}".format(i,len(fs),f, kwargs.keys()))
             
             if f in kwargs:
                 fs[i].value = kwargs[f]
@@ -462,7 +470,7 @@ class pd(Detector1):
             # check if we are setting no phase that this is only on the last
             # demodulation phase.
             raise pkex.BasePyKatException("Only last demodulation phase can be set to None")
-        elif isinstance(value, str) and not isinstance(value,float) and value.lower() != "max":
+        elif isinstance(value, six.string_types) and not isinstance(value,float) and value.lower() != "max":
             raise pkex.BasePyKatException("Demodulation phase can only be set to a 'max' or a number (or None if the last demodulation phase)")
             
         setattr(self, '_'+ self.__class__.__name__ +'__phi' + num, value)
diff --git a/pykat/exceptions.py b/pykat/exceptions.py
index e3d904276bb18c7b9eeb50f071340305b80e9611..1382809d9777529702e0030a1e9e78e30eba5fce 100644
--- a/pykat/exceptions.py
+++ b/pykat/exceptions.py
@@ -1,4 +1,8 @@
+from __future__ import absolute_import
+from __future__ import division
 from __future__ import print_function
+from __future__ import unicode_literals
+
 import pykat.external.six as six
 if six.PY2:
 	import exceptions
diff --git a/pykat/finesse.py b/pykat/finesse.py
index 572763da589383d56c2daf7f89e8c0485863e9f0..e0063a831ee73dd8581dc54295fee79879c57393 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -23,7 +23,11 @@ Contact at ddb@star.sr.bham.ac.uk
 
 @author: Daniel Brown
 """
+from __future__ import absolute_import
+from __future__ import division
 from __future__ import print_function
+from __future__ import unicode_literals
+
 import sys
 import os
 import subprocess
@@ -52,6 +56,8 @@ from pykat.commands import Command, xaxis
 from pykat.SIfloat import *
 from pykat.param import Param, AttrParam
 
+import pykat.external.six as six
+
 import pykat.exceptions as pkex
 
 from pykat import USE_GUI, HAS_OPTIVIS, NoGUIException
@@ -772,7 +778,7 @@ class kat(object):
                         # manually add the line to the block contents
                         self.__blocks[self.__currentTag].contents.append(line) 
                 
-                    if obj != None and not isinstance(obj, str):
+                    if obj != None and not isinstance(obj, six.string_types):
                         if self.hasNamedObject(obj.name):
                             getattr(self, obj.name).remove()
                             print("Removed existing object '{0}' of type {1} to add line '{2}'".format(obj.name, obj.__class__, line))
@@ -1142,13 +1148,15 @@ class kat(object):
                 
                     r.xlabel = hdr[0]
                     r.ylabel = hdr[1]
-                    r.zlabels = map(str.strip, hdr[2:])
+                    r.zlabels = [s.strip for s in hdr[2:]]
+                    #r.zlabels = map(str.strip, hdr[2:])
                          
                 else:
                     [r.x,r.y,hdr] = self.readOutFile(outfile)
             
                     r.xlabel = hdr[0]
-                    r.ylabels = map(str.strip, hdr[1:])
+                    r.ylabels = [s.strip for s in hdr[1:]]
+                    #r.ylabels = map(str.strip, hdr[1:]) // replaced 090415 adf 
                     
             if save_kat:
                 if kat_name == None:
@@ -1376,7 +1384,7 @@ class kat(object):
         for key in self.__blocks:
             objs = self.__blocks[key].contents
             for obj in objs:
-                if isinstance(obj, str):
+                if isinstance(obj,  six.string_types):
                     if fragment in obj:
                         print("  ** removing line '{0}'".format(obj))
                         objs.remove(obj)
@@ -1405,7 +1413,7 @@ class kat(object):
         for key in self.__blocks:
             objs = self.__blocks[key].contents
             for obj in objs:
-                if isinstance(obj, str):
+                if isinstance(obj, six.string_types):
                     print(obj)
                     found = True
         
@@ -1418,7 +1426,7 @@ class kat(object):
 
         def writeBlock():
             for obj in objs:
-                if isinstance(obj, str):
+                if isinstance(obj, six.string_types):
                     out.append(obj + '\n')
                     
                 elif isinstance(obj, Component) or isinstance(obj, Detector) or isinstance(obj, Command):
@@ -1492,7 +1500,7 @@ class kat(object):
 
                     out.append("vacuum {0}\n".format(" ".join(objs)))
                                         
-            elif isinstance(self.vacuum, str):
+            elif isinstance(self.vacuum, six.string_types):
                 out.append("vacuum {0}\n".format(self.vacuum))
             else:
                 pkex.BasePyKatException("Couldn't understand vacuum input list")
diff --git a/pykat/node_network.py b/pykat/node_network.py
index e5db68304399b711c3844de435c9c2c3c09dc013..59b6293932a3a20958b1bf54a78237588ee52633 100644
--- a/pykat/node_network.py
+++ b/pykat/node_network.py
@@ -4,7 +4,11 @@ Created on Sun Jan 27 10:02:41 2013
 
 @author: Daniel
 """
+from __future__ import absolute_import
+from __future__ import division
 from __future__ import print_function
+from __future__ import unicode_literals
+
 from pykat import USE_GUI, NoGUIException
 
 if USE_GUI:
diff --git a/pykat/param.py b/pykat/param.py
index 590fbf5f160b1ddf0df847fbb74f5a51c306926a..7b5f16567a8e042a85e8bcb569b7fd3ad9c144a8 100644
--- a/pykat/param.py
+++ b/pykat/param.py
@@ -1,4 +1,8 @@
+from __future__ import absolute_import
+from __future__ import division
 from __future__ import print_function
+from __future__ import unicode_literals
+
 import abc
 import pykat.exceptions as pkex
 import weakref
diff --git a/pykat/plotting.py b/pykat/plotting.py
index 10e6cc1a7ba9a1662c2743962778d1fe06e56bcf..7abd88cfdc0eeb6ef4a60a561b08202b21bb9ebf 100644
--- a/pykat/plotting.py
+++ b/pykat/plotting.py
@@ -4,6 +4,10 @@ Created on Sat Feb 02 10:35:04 2013
 
 @author: Daniel
 """
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
 
 import numpy as np
 import matplotlib
@@ -80,4 +84,4 @@ class pp():
     # for Palatino and other serif fonts use:
     #font = {'family':'serif','serif':['Palatino']}
     SCREEN_TITLE = True # show title on screen?
-    PRINT_TITLE = False # show title in saved file?
\ No newline at end of file
+    PRINT_TITLE = False # show title in saved file?
diff --git a/pykat/profiling.py b/pykat/profiling.py
index c6302a2f3d9e8b857fd30ce9f5c96083af92bdf2..4d1a7b9fdc9ae9a6fc761634ea7813a95b411bff 100644
--- a/pykat/profiling.py
+++ b/pykat/profiling.py
@@ -1,3 +1,8 @@
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
 import numpy as np
 import pylab as pl
 
@@ -24,4 +29,4 @@ def plotReducedPerformanceData(perfdata, ordered=False):
     pl.xlabel("Time [s]")
     pl.title("Timing data for FINESSE")
     
-    return labels, times, fig
\ No newline at end of file
+    return labels, times, fig
diff --git a/pykat/structs.py b/pykat/structs.py
index d8838afbf36f703861cf719d2926e953707e75bd..90c5fb844fa656bd4ad7e59bcc4caed3c0b213ce 100644
--- a/pykat/structs.py
+++ b/pykat/structs.py
@@ -4,7 +4,11 @@ Created on Mon Jan 28 12:00:29 2013
 
 @author: Daniel
 """
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
 
 class Scale:
     linear = 'lin'
-    logarithmic = 'log'
\ No newline at end of file
+    logarithmic = 'log'