diff --git a/src/database/data_container.cpp b/src/database/data_container.cpp
new file mode 100644
index 0000000..6e4b0c9
--- /dev/null
+++ b/src/database/data_container.cpp
@@ -0,0 +1,40 @@
+/*-------------------------------------------------------
+
+ - Module : database
+ - File : data_container.cpp
+ - Author : Fabien Georget
+
+ Copyright (c) 2014, Fabien Georget, Princeton University
+
+---------------------------------------------------------*/
+
+
+#include "data_container.hpp"
+
+namespace specmicp {
+namespace database {
+
+//! \brief Return the molar mass (kg/mol) of a mineral
+double DataContainer::molar_mass_mineral(int m) {
+    return 1e-3*nu_mineral.row(m).dot(molar_mass_basis);
+}
+//! \brief Return the molar mass (kg/mol) of a mineral governed by kinetic
+double DataContainer::molar_mass_mineral_kinetic(int m) {
+    return 1e-3*nu_mineral_kinetic.row(m).dot(molar_mass_basis);
+}
+
+//! \brief Return the molar volume (m^3/mol) of a mineral
+double DataContainer::molar_volume_mineral(int m)
+{
+    if (_molar_volume_mineral(m) < 0) {throw db_noninitialized_value("molar volume", labels_minerals[m]);}
+    return 1e-6*_molar_volume_mineral(m);
+}
+//! \brief Return the molar volume (m^3/mol) of a mineral governed by kinetic
+double DataContainer::molar_volume_mineral_kinetic(int m)
+{
+    if (_molar_volume_mineral_kinetic(m) < 0) {throw db_noninitialized_value("molar volume", labels_minerals_kinetic[m]);}
+    return 1e-6*_molar_volume_mineral_kinetic(m);
+}
+
+} // end namespace database
+} // end namespace specmicp