diff --git a/src/main/java/net/onrc/onos/datastore/RCClient.java b/src/main/java/net/onrc/onos/datastore/RCClient.java
index 8deefe2..a918f02 100644
--- a/src/main/java/net/onrc/onos/datastore/RCClient.java
+++ b/src/main/java/net/onrc/onos/datastore/RCClient.java
@@ -1,9 +1,18 @@
 package net.onrc.onos.datastore;
 
+import java.io.File;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.PropertiesConfiguration;
+
 import edu.stanford.ramcloud.JRamCloud;
 
 public class RCClient {
 
+    private static final String DB_CONFIG_FILE = "conf/ramcloud.conf";
+    public static final Configuration config = getConfiguration();
+
     // Value taken from RAMCloud's Status.h
     // FIXME These constants should be defined by JRamCloud
     public static final int STATUS_OK = 0;
@@ -18,9 +27,7 @@
     private static final ThreadLocal<JRamCloud> tlsRCClient = new ThreadLocal<JRamCloud>() {
 	@Override
 	protected JRamCloud initialValue() {
-	    // FIXME come up with a proper way to retrieve configuration
-	    return new JRamCloud(System.getProperty("ramcloud.coordinator",
-		    "fast+udp:host=127.0.0.1,port=12246"));
+	    return new JRamCloud(getCoordinatorUrl(config));
 	}
     };
 
@@ -34,4 +41,31 @@
 	return tlsRCClient.get();
     }
 
+    public static final Configuration getConfiguration() {
+	    final File configFile = new File(System.getProperty("ramcloud.config.path", DB_CONFIG_FILE));
+	    return getConfiguration(configFile);
+    }
+
+    public static final Configuration getConfiguration(final File configFile) {
+	if (configFile == null) {
+	    throw new IllegalArgumentException("Need to specify a configuration file or storage directory");
+	}
+
+	if (!configFile.isFile()) {
+	    throw new IllegalArgumentException("Location of configuration must be a file");
+	}
+
+	try {
+	    return new PropertiesConfiguration(configFile);
+	} catch (ConfigurationException e) {
+	    throw new IllegalArgumentException("Could not load configuration at: " + configFile, e);
+	}
+    }
+
+    public static String getCoordinatorUrl(final Configuration configuration) {
+	final String coordinatorIp = configuration.getString("ramcloud.coordinatorIp", "fast+udp:host=127.0.0.1");
+	final String coordinatorPort = configuration.getString("ramcloud.coordinatorPort", "port=12246");
+	final String coordinatorURL = coordinatorIp + "," + coordinatorPort;
+	return coordinatorURL;
+    }
 }
