diff --git a/lm/nifty_lm.py b/lm/nifty_lm.py
index 2f6d761310a4ae96108e5342efbc63d7644ec0dd..9b44b9780deef96a0cd3e69936178fc989b4ca74 100644
--- a/lm/nifty_lm.py
+++ b/lm/nifty_lm.py
@@ -50,14 +50,16 @@ from nifty.nifty_paradict import lm_space_paradict,\
                                  hp_space_paradict
 from nifty.nifty_power_indices import lm_power_indices
 
+from nifty.nifty_mpi_data import distributed_data_object
+
 from nifty.nifty_random import random
 
 gl = gdi.get('libsharp_wrapper_gl')
 hp = gdi.get('healpy')
 
-LM_DISTRIBUTION_STRATEGIES = []
-GL_DISTRIBUTION_STRATEGIES = []
-HP_DISTRIBUTION_STRATEGIES = []
+LM_DISTRIBUTION_STRATEGIES = ['not']
+GL_DISTRIBUTION_STRATEGIES = ['not']
+HP_DISTRIBUTION_STRATEGIES = ['not']
 
 
 class lm_space(point_space):
@@ -120,7 +122,7 @@ class lm_space(point_space):
     """
 
     def __init__(self, lmax, mmax=None, dtype=np.dtype('complex128'),
-                 datamodel='np', comm=gc['default_comm']):
+                 datamodel='not', comm=gc['default_comm']):
         """
             Sets the attributes for an lm_space class instance.
 
@@ -167,9 +169,9 @@ class lm_space(point_space):
         self.dtype = dtype
 
         # set datamodel
-        if datamodel not in ['np']:
+        if datamodel not in ['not']:
             about.warnings.cprint("WARNING: datamodel set to default.")
-            self.datamodel = 'np'
+            self.datamodel = 'not'
         else:
             self.datamodel = datamodel
 
@@ -283,7 +285,15 @@ class lm_space(point_space):
             return mol
 
     def _cast_to_d2o(self, x, dtype=None, hermitianize=True, **kwargs):
-        raise NotImplementedError
+        casted_x = super(lm_space, self)._cast_to_d2o(x=x,
+                                                     dtype=dtype,
+                                                     **kwargs)
+        complexity_mask = distributed_data_object.iscomplex(casted_x[:self.paradict['lmax']+1])
+        if distributed_data_object.any(complexity_mask):
+            about.warnings.cprint("WARNING: Taking the absolute values for " +
+                                  "all complex entries where lmax==0")
+            casted_x[complexity_mask] = distributed_data_object.__abs__(casted_x[complexity_mask])
+        return casted_x
 
     def _cast_to_np(self, x, dtype=None, hermitianize=True, **kwargs):
         casted_x = super(lm_space, self)._cast_to_np(x=x,
@@ -911,7 +921,7 @@ class gl_space(point_space):
     """
 
     def __init__(self, nlat, nlon=None, dtype=np.dtype('float64'),
-                 datamodel='np', comm=gc['default_comm']):
+                 datamodel='not', comm=gc['default_comm']):
         """
             Sets the attributes for a gl_space class instance.
 
@@ -952,9 +962,9 @@ class gl_space(point_space):
         self.dtype = dtype
 
         # set datamodel
-        if datamodel not in ['np']:
+        if datamodel not in ['not']:
             about.warnings.cprint("WARNING: datamodel set to default.")
-            self.datamodel = 'np'
+            self.datamodel = 'not'
         else:
             self.datamodel = datamodel
 
@@ -1034,6 +1044,18 @@ class gl_space(point_space):
             mol = self.cast(1, dtype=np.float)
             return self.calc_weight(mol, power=1)
 
+    #TODO: Check with Theo!
+    def _cast_to_d2o(self, x, dtype=None, hermitianize=True, **kwargs):
+        casted_x = super(gl_space, self)._cast_to_d2o(x=x,
+                                                     dtype=dtype,
+                                                     **kwargs)
+        complexity_mask = distributed_data_object.iscomplex(casted_x[:self.paradict['nlat']+1])
+        if distributed_data_object.any(complexity_mask):
+            about.warnings.cprint("WARNING: Taking the absolute values for " +
+                                  "all complex entries where lmax==0")
+            casted_x[complexity_mask] = distributed_data_object.__abs__(casted_x[complexity_mask])
+        return casted_x
+
     # TODO: Extend to binning/log
     def enforce_power(self, spec, size=None, kindex=None):
         if kindex is None:
@@ -1209,22 +1231,22 @@ class gl_space(point_space):
             y : numpy.ndarray
                 Weighted array.
         """
-        x = self.cast(x)
+        x = self._cast_to_np(x)
         # weight
         nlat = self.paradict['nlat']
         nlon = self.paradict['nlon']
         if self.dtype == np.dtype('float32'):
-            return gl.weight_f(x,
+            return distributed_data_object(gl.weight_f(x,
                                np.array(self.distances),
                                p=np.float32(power),
                                nlat=nlat, nlon=nlon,
-                               overwrite=False)
+                               overwrite=False))
         else:
-            return gl.weight(x,
+            return distributed_data_object(gl.weight(x,
                              np.array(self.distances),
                              p=np.float32(power),
                              nlat=nlat, nlon=nlon,
-                             overwrite=False)
+                             overwrite=False))
 
     def get_weight(self, power=1):
         # TODO: Check if this function is compatible to the rest of nifty
@@ -1554,7 +1576,7 @@ class hp_space(point_space):
             An array with one element containing the pixel size.
     """
 
-    def __init__(self, nside, datamodel='np', comm=gc['default_comm']):
+    def __init__(self, nside, datamodel='not', comm=gc['default_comm']):
         """
             Sets the attributes for a hp_space class instance.
 
@@ -1588,9 +1610,9 @@ class hp_space(point_space):
         self.dtype = np.dtype('float64')
 
         # set datamodel
-        if datamodel not in ['np']:
+        if datamodel not in ['not']:
             about.warnings.cprint("WARNING: datamodel set to default.")
-            self.datamodel = 'np'
+            self.datamodel = 'not'
         else:
             self.datamodel = datamodel
 
diff --git a/nifty_power_indices.py b/nifty_power_indices.py
index 01682124ce2d1e4a3e5c6daf2f0d665d2b63064a..ded40b1ee4ff46dbb3e0dde7cac25c81ba148a89 100644
--- a/nifty_power_indices.py
+++ b/nifty_power_indices.py
@@ -672,7 +672,7 @@ class lm_power_indices(power_indices):
             -------
             nkdict : distributed_data_object
         """
-        if self.datamodel == 'np':
+        if self.datamodel == 'not':
             if 'healpy' in gdi:  # default
                 nkdict = hp.Alm.getlm(self.lmax, i=None)[0]
             else:
diff --git a/test/test_nifty_spaces.py b/test/test_nifty_spaces.py
index b22ebbc31157a2e55aab8feda4a1ed2ffb7eb103..efc378564f1baaee568d363b073db891ec4017e3 100644
--- a/test/test_nifty_spaces.py
+++ b/test/test_nifty_spaces.py
@@ -82,9 +82,9 @@ all_hp_datatypes = [np.dtype('float64')]
 DATAMODELS = {}
 DATAMODELS['point_space'] = ['np'] + POINT_DISTRIBUTION_STRATEGIES
 DATAMODELS['rg_space'] = ['np'] + RG_DISTRIBUTION_STRATEGIES
-DATAMODELS['lm_space'] = ['np'] + LM_DISTRIBUTION_STRATEGIES
-DATAMODELS['gl_space'] = ['np'] + GL_DISTRIBUTION_STRATEGIES
-DATAMODELS['hp_space'] = ['np'] + HP_DISTRIBUTION_STRATEGIES
+DATAMODELS['lm_space'] = [] + LM_DISTRIBUTION_STRATEGIES
+DATAMODELS['gl_space'] = [] + GL_DISTRIBUTION_STRATEGIES
+DATAMODELS['hp_space'] = [] + HP_DISTRIBUTION_STRATEGIES
 
 ###############################################################################
 
@@ -296,6 +296,7 @@ class Test_Common_Point_Like_Space_Interface(unittest.TestCase):
         assert(isinstance(s.get_dof(split=True), tuple))
 
         assert(isinstance(s.get_meta_volume(), np.float))
+        print(s.get_meta_volume(split=True), type(s.cast(1)))
         assert(isinstance(s.get_meta_volume(split=True), type(s.cast(1))))
         assert_almost_equal(
             s.get_meta_volume(), s.get_meta_volume(split=True).sum(), 2)