diff --git a/tupak/result.py b/tupak/result.py
index ce6e5465f0c7a6be682bfec3abdf447ddd8120ba..50d680392f09a87b27d8f17fd4238b2dee36fe6d 100644
--- a/tupak/result.py
+++ b/tupak/result.py
@@ -39,7 +39,8 @@ class Result(dict):
     def __init__(self, dictionary=None):
         if type(dictionary) is dict:
             for key in dictionary:
-                setattr(self, key, self._decode_object(dictionary[key], key))
+                val = self._standardise_strings(dictionary[key], key)
+                setattr(self, key, val)
 
     def __getattr__(self, name):
         try:
@@ -62,21 +63,17 @@ class Result(dict):
         else:
             return ''
 
-    def _decode_object(self, item, name=None):
-        """ When reading in data, ensure all bytes are decoded to strings """
-        if type(item) == pd.DataFrame:
-            return item
-        try:
+    def _standardise_a_string(self, item):
+        """ When reading in data, ensure all strings are decoded correctly """
+        if type(item) in [bytes]:
             return item.decode()
-        except AttributeError:
-            pass
-
-        try:
-            return [i.decode() for i in item]
-        except (AttributeError, TypeError):
-            pass
+        else:
+            return item
 
-        logging.debug("Unable to decode item {}".format(name))
+    def _standardise_strings(self, item, name=None):
+        if type(item) in [list]:
+            item = [self._standardise_a_string(i) for i in item]
+        #logging.debug("Unable to decode item {}".format(name))
         return item
 
     def get_result_dictionary(self):