diff --git a/ConfigFile.cc b/ConfigFile.cc
index fbcc2af980b32bf99a7ff19bdb380a43e7318a65..3ad4600d28eb606862331d1cecd35b1ec8a3958a 100644
--- a/ConfigFile.cc
+++ b/ConfigFile.cc
@@ -277,7 +277,7 @@ ConfigFile::getConfigFileInfo(const string &parallel_config_file)
                             exit(EXIT_FAILURE);
                           }
                         else
-                          member_nodes[node_name] = NULL;
+                          member_nodes[node_name] = 1.0;
                       node_name = token;
                     }
                   else
@@ -289,7 +289,7 @@ ConfigFile::getConfigFileInfo(const string &parallel_config_file)
                             cerr << "ERROR (in config file): Misspecification of weights passed to Members option." << endl;
                             exit(EXIT_FAILURE);
                           }
-                        member_nodes[node_name] = new double (weight);
+                        member_nodes[node_name] = weight;
                       }
                     catch (bad_lexical_cast &)
                       {
@@ -299,7 +299,7 @@ ConfigFile::getConfigFileInfo(const string &parallel_config_file)
                 }
               if (!node_name.empty())
                 if (member_nodes.find(node_name) == member_nodes.end())
-                  member_nodes[node_name] = NULL;
+                  member_nodes[node_name] = 1.0;
                 else
                   {
                     cerr << "ERROR (in config file): Node entered twice in specification of cluster." << endl;
@@ -480,19 +480,14 @@ ConfigFile::transformPass()
   else
     cluster_it = clusters.find(cluster_name);
 
-  member_nodes_t member_nodes = cluster_it->second->member_nodes;
   double weight_denominator = 0.0;
-  for (member_nodes_t::const_iterator it = member_nodes.begin();
-       it != member_nodes.end(); it++)
-    if (it->second)
-      weight_denominator += *it->second;
-    else
-      weight_denominator += 1.0;
+  for (member_nodes_t::const_iterator it = cluster_it->second->member_nodes.begin();
+       it != cluster_it->second->member_nodes.end(); it++)
+    weight_denominator += it->second;
 
-  for (member_nodes_t::iterator it = member_nodes.begin();
-       it != member_nodes.end(); it++)
-    if (it->second)
-      *it->second /= weight_denominator;
+  for (member_nodes_t::iterator it = cluster_it->second->member_nodes.begin();
+       it != cluster_it->second->member_nodes.end(); it++)
+    it->second /= weight_denominator;
 }
 
 void
@@ -538,12 +533,8 @@ ConfigFile::writeCluster(ostream &output) const
              << "'RemoteDirectory', '" << it->second->remoteDirectory << "', "
              << "'DynarePath', '" << it->second->dynarePath << "', "
              << "'MatlabOctavePath', '" << it->second->matlabOctavePath << "', "
-             << "'OperatingSystem', '" << it->second->operatingSystem << "', ";
-
-      if (cluster_it->second->member_nodes.find(it->first)->second)
-        output << "'NodeWeight', '" << *(cluster_it->second->member_nodes.find(it->first)->second) << "', ";
-      else
-        output << "'NodeWeight', '', ";
+             << "'OperatingSystem', '" << it->second->operatingSystem << "', "
+             << "'NodeWeight', '" << (cluster_it->second->member_nodes.find(it->first))->second << "', ";
 
       if (it->second->singleCompThread)
         output << "'SingleCompThread', 'true');" << endl;
diff --git a/ConfigFile.hh b/ConfigFile.hh
index 76032b661e1b25a6815df381f233b01f875f3a65..5a591e707c2bee2bf260b3672d4107774afc099c 100644
--- a/ConfigFile.hh
+++ b/ConfigFile.hh
@@ -25,7 +25,7 @@
 
 using namespace std;
 
-typedef map<string, double *> member_nodes_t;
+typedef map<string, double> member_nodes_t;
 
 
 class SlaveNode
@@ -60,7 +60,7 @@ public:
   ~Cluster();
 
 protected:
-  const member_nodes_t member_nodes;
+  member_nodes_t member_nodes;
 };
 
 //! The abstract representation of a "config" file