diff --git a/nifty/field.py b/nifty/field.py
index a6b02f39431d198b6377d19c7199084a45e4647d..3e33e44fdf3af8426ba74235eaf833e66c9a94b0 100644
--- a/nifty/field.py
+++ b/nifty/field.py
@@ -836,7 +836,10 @@ class Field(Loggable, Versionable, object):
         hdf5_group.attrs['domain_axes'] = str(self.domain_axes)
         hdf5_group['num_domain'] = len(self.domain)
 
-        ret_dict = {'val': self.val}
+        if self._val is None:
+            ret_dict = {}
+        else:
+            ret_dict = {'val': self.val}
 
         for i in range(len(self.domain)):
             ret_dict['s_' + str(i)] = self.domain[i]
@@ -856,7 +859,12 @@ class Field(Loggable, Versionable, object):
         new_field.domain = tuple(temp_domain)
 
         exec('new_field.domain_axes = ' + hdf5_group.attrs['domain_axes'])
-        new_field._val = repository.get('val', hdf5_group)
+
+        try:
+            new_field._val = repository.get('val', hdf5_group)
+        except(KeyError):
+            new_field._val = None
+
         new_field.dtype = np.dtype(hdf5_group.attrs['dtype'])
         new_field.distribution_strategy =\
             hdf5_group.attrs['distribution_strategy']
diff --git a/nifty/field_types/field_array.py b/nifty/field_types/field_array.py
index 3f937ac1754fe332a073aad60dcec5b3819a5436..3afb04ec38e768624d82668794c9654316f2c6f3 100644
--- a/nifty/field_types/field_array.py
+++ b/nifty/field_types/field_array.py
@@ -1,7 +1,5 @@
 # -*- coding: utf-8 -*-
 
-import pickle
-
 import numpy as np
 
 from field_type import FieldType
@@ -29,14 +27,14 @@ class FieldArray(FieldType):
 
     def _to_hdf5(self, hdf5_group):
         hdf5_group['shape'] = self.shape
-        hdf5_group['dtype'] = pickle.dumps(self.dtype)
+        hdf5_group.attrs['dtype'] = self.dtype.name
 
         return None
 
     @classmethod
     def _from_hdf5(cls, hdf5_group, loopback_get):
         result = cls(
-            hdf5_group['shape'][:],
-            pickle.loads(hdf5_group['dtype'][()])
+            shape=hdf5_group['shape'][:],
+            dtype=np.dtype(hdf5_group.attrs['dtype'])
             )
         return result
diff --git a/nifty/version.py b/nifty/version.py
index 04b23a2437b25d14313adee1b1f875608d44efd5..7cba59a61282fdc84c0d05ddac9a6380194747be 100644
--- a/nifty/version.py
+++ b/nifty/version.py
@@ -4,4 +4,4 @@
 # 1) we don't load dependencies by storing it in __init__.py
 # 2) we can import it in setup.py for the same reason
 # 3) we can import it into your module module
-__version__ = '3.0.3'
+__version__ = '3.0.4'