diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/generic/service/persistent/DelegateSentryStore.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/generic/service/persistent/DelegateSentryStore.java
index b81360b..721f8b2 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/generic/service/persistent/DelegateSentryStore.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/generic/service/persistent/DelegateSentryStore.java
@@ -37,7 +37,7 @@
 import org.apache.sentry.provider.db.service.model.MSentryGroup;
 import org.apache.sentry.provider.db.service.model.MSentryRole;
 import org.apache.sentry.provider.db.service.persistent.CommitContext;
-import org.apache.sentry.provider.db.service.persistent.SentryStore;
+import org.apache.sentry.provider.db.service.persistent.DbSentryStore;
 import org.apache.sentry.provider.db.service.thrift.SentryPolicyStoreProcessor;
 import org.apache.sentry.provider.db.service.thrift.TSentryGroup;
 import org.apache.sentry.provider.db.service.thrift.TSentryRole;
@@ -57,7 +57,7 @@
  * resourceName2=cl1,resourceType2=COLUMN ) of generic privilege table
  */
 public class DelegateSentryStore implements SentryStoreLayer {
-  private SentryStore delegate;
+  private DbSentryStore delegate;
   private Configuration conf;
   private Set<String> adminGroups;
   private PrivilegeOperatePersistence privilegeOperator;
@@ -69,7 +69,7 @@
     conf.set(ServerConfig.SENTRY_STORE_ORPHANED_PRIVILEGE_REMOVAL,"false");
     this.conf = conf;
     //delegated old sentryStore
-    this.delegate = new SentryStore(conf);
+    this.delegate = new DbSentryStore(conf);
     adminGroups = ImmutableSet.copyOf(toTrimedLower(Sets.newHashSet(conf.getStrings(
         ServerConfig.ADMIN_GROUPS, new String[]{}))));
   }
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/DbSentryStore.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/DbSentryStore.java
index 136dab6..71707e4 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/DbSentryStore.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/DbSentryStore.java
@@ -66,6 +66,7 @@
 import org.apache.sentry.provider.db.service.thrift.TSentryPrivilege;
 import org.apache.sentry.provider.db.service.thrift.TSentryPrivilegeMap;
 import org.apache.sentry.provider.db.service.thrift.TSentryRole;
+import org.apache.sentry.provider.db.service.thrift.TStoreSnapshot;
 import org.apache.sentry.service.thrift.ServiceConstants.PrivilegeScope;
 import org.apache.sentry.service.thrift.ServiceConstants.ServerConfig;
 import org.datanucleus.store.rdbms.exceptions.MissingTableException;
@@ -87,7 +88,7 @@
  * such as role and group names will be normalized to lowercase
  * in addition to starting and ending whitespace.
  */
-public class SentryStore {
+public class DbSentryStore implements SentryStore {
   private static final UUID SERVER_UUID = UUID.randomUUID();
   private static final Logger LOGGER = LoggerFactory
           .getLogger(SentryStore.class);
@@ -119,7 +120,7 @@
   private PrivCleaner privCleaner = null;
   private Thread privCleanerThread = null;
 
-  public SentryStore(Configuration conf) throws SentryNoSuchObjectException,
+  public DbSentryStore(Configuration conf) throws SentryNoSuchObjectException,
   SentryAccessDeniedException {
     commitSequenceId = 0;
     this.conf = conf;
@@ -1759,6 +1760,52 @@
     }
   }
 
+  // TODO : Fix this : START
+
+  @Override
+  public Configuration getConfiguration() {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public Set<String> getGroupsForRole(String roleName) {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public long getRoleCount() {
+    // TODO Auto-generated method stub
+    return 0;
+  }
+
+  @Override
+  public long getPrivilegeCount() {
+    // TODO Auto-generated method stub
+    return 0;
+  }
+
+  @Override
+  public long getGroupCount() {
+    // TODO Auto-generated method stub
+    return 0;
+  }
+
+  @Override
+  public TStoreSnapshot toSnapshot() {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public void fromSnapshot(TStoreSnapshot snapshot) {
+    // TODO Auto-generated method stub
+    
+  }
+
+  // TODO : Fix this : END 
+
   /**
    * This thread exists to clean up "orphaned" privilege rows in the database.
    * These rows aren't removed automatically due to the fact that there is
diff --git a/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/generic/service/persistent/TestSentryRole.java b/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/generic/service/persistent/TestSentryRole.java
index f8eecd9..3227045 100644
--- a/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/generic/service/persistent/TestSentryRole.java
+++ b/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/generic/service/persistent/TestSentryRole.java
@@ -37,6 +37,7 @@
 import org.apache.sentry.provider.db.service.model.MSentryPrivilege;
 import org.apache.sentry.provider.db.service.model.MSentryRole;
 import org.apache.sentry.provider.db.service.persistent.SentryStore;
+import org.apache.sentry.provider.db.service.persistent.StoreUtils;
 import org.apache.sentry.service.thrift.ServiceConstants.ServerConfig;
 import org.junit.After;
 import org.junit.AfterClass;
@@ -138,8 +139,8 @@
     hivePrivilege.setTableName("tb1");
     hivePrivilege.setPrivilegeScope("table");
     hivePrivilege.setAction("select");
-    hivePrivilege.setURI(SentryStore.NULL_COL);
-    hivePrivilege.setColumnName(SentryStore.NULL_COL);
+    hivePrivilege.setURI(StoreUtils.NULL_COL);
+    hivePrivilege.setColumnName(StoreUtils.NULL_COL);
     hivePrivilege.setGrantOption(true);
     //The same hivePrivilege
     MSentryPrivilege hivePrivilege2 = new MSentryPrivilege(hivePrivilege);
@@ -200,8 +201,8 @@
     hivePrivilege.setTableName("tb1");
     hivePrivilege.setPrivilegeScope("table");
     hivePrivilege.setAction("select");
-    hivePrivilege.setURI(SentryStore.NULL_COL);
-    hivePrivilege.setColumnName(SentryStore.NULL_COL);
+    hivePrivilege.setURI(StoreUtils.NULL_COL);
+    hivePrivilege.setColumnName(StoreUtils.NULL_COL);
     hivePrivilege.setGrantOption(true);
 
     //solr privilege
@@ -279,8 +280,8 @@
     hivePrivilege.setTableName("tb1");
     hivePrivilege.setPrivilegeScope("table");
     hivePrivilege.setAction("select");
-    hivePrivilege.setURI(SentryStore.NULL_COL);
-    hivePrivilege.setColumnName(SentryStore.NULL_COL);
+    hivePrivilege.setURI(StoreUtils.NULL_COL);
+    hivePrivilege.setColumnName(StoreUtils.NULL_COL);
     hivePrivilege.setGrantOption(true);
 
     //solr privilege
