diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/tools/AdminTestBase.java b/helix-admin-webapp/src/test/java/org/apache/helix/tools/AdminTestBase.java
index bebbd87..21fc4cc 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/tools/AdminTestBase.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/tools/AdminTestBase.java
@@ -54,7 +54,7 @@
     topJavaLogger.setLevel(Level.WARNING);
 
     // start zk
-    _zkServer = TestHelper.startZkSever(ZK_ADDR);
+    _zkServer = TestHelper.startZkServer(ZK_ADDR);
     AssertJUnit.assertTrue(_zkServer != null);
     ZKClientPool.reset();
 
diff --git a/helix-core/src/main/java/org/apache/helix/PropertyPathConfig.java b/helix-core/src/main/java/org/apache/helix/PropertyPathConfig.java
index d2f9650..eb5310b 100644
--- a/helix-core/src/main/java/org/apache/helix/PropertyPathConfig.java
+++ b/helix-core/src/main/java/org/apache/helix/PropertyPathConfig.java
@@ -93,7 +93,6 @@
     addEntry(PropertyType.STATEMODELDEFS, 2, "/{clusterName}/STATEMODELDEFS/{stateModelName}");
     addEntry(PropertyType.CONTROLLER, 1, "/{clusterName}/CONTROLLER");
     addEntry(PropertyType.PROPERTYSTORE, 1, "/{clusterName}/PROPERTYSTORE");
-    addEntry(PropertyType.HELIX_PROPERTYSTORE, 1, "/{clusterName}/HELIX_PROPERTYSTORE");
 
     // INSTANCE
     addEntry(PropertyType.MESSAGES, 2, "/{clusterName}/INSTANCES/{instanceName}/MESSAGES");
diff --git a/helix-core/src/main/java/org/apache/helix/PropertyType.java b/helix-core/src/main/java/org/apache/helix/PropertyType.java
index 3593a5d..b11d1ce 100644
--- a/helix-core/src/main/java/org/apache/helix/PropertyType.java
+++ b/helix-core/src/main/java/org/apache/helix/PropertyType.java
@@ -37,7 +37,6 @@
   STATEMODELDEFS(Type.CLUSTER, true, false, false, false, true),
   CONTROLLER(Type.CLUSTER, true, false),
   PROPERTYSTORE(Type.CLUSTER, true, false),
-  HELIX_PROPERTYSTORE(Type.CLUSTER, true, false),
 
   // INSTANCE PROPERTIES
   MESSAGES(Type.INSTANCE, true, true, true),
diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixManager.java b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixManager.java
index de93035..cff370b 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixManager.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixManager.java
@@ -994,7 +994,7 @@
     if (_helixPropertyStore == null)
     {
       String path =
-          PropertyPathConfig.getPath(PropertyType.HELIX_PROPERTYSTORE, _clusterName);
+          PropertyPathConfig.getPath(PropertyType.PROPERTYSTORE, _clusterName);
 
       _helixPropertyStore =
           new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_zkClient),
diff --git a/helix-core/src/test/java/org/apache/helix/TestHelper.java b/helix-core/src/test/java/org/apache/helix/TestHelper.java
index 2d33cb1..58dc275 100644
--- a/helix-core/src/test/java/org/apache/helix/TestHelper.java
+++ b/helix-core/src/test/java/org/apache/helix/TestHelper.java
@@ -86,25 +86,25 @@
       return port;
   }
   
-  static public ZkServer startZkSever(final String zkAddress) throws Exception
+  static public ZkServer startZkServer(final String zkAddress) throws Exception
   {
     List<String> empty = Collections.emptyList();
-    return TestHelper.startZkSever(zkAddress, empty, true);
+    return TestHelper.startZkServer(zkAddress, empty, true);
   }
 
-  static public ZkServer startZkSever(final String zkAddress, final String rootNamespace) throws Exception
+  static public ZkServer startZkServer(final String zkAddress, final String rootNamespace) throws Exception
   {
     List<String> rootNamespaces = new ArrayList<String>();
     rootNamespaces.add(rootNamespace);
-    return TestHelper.startZkSever(zkAddress, rootNamespaces, true);
+    return TestHelper.startZkServer(zkAddress, rootNamespaces, true);
   }
 
-  static public ZkServer startZkSever(final String zkAddress,
+  static public ZkServer startZkServer(final String zkAddress,
       final List<String> rootNamespaces) throws Exception {
-    return startZkSever(zkAddress, rootNamespaces, true);
+    return startZkServer(zkAddress, rootNamespaces, true);
   }
   
-  static public ZkServer startZkSever(final String zkAddress,
+  static public ZkServer startZkServer(final String zkAddress,
                                       final List<String> rootNamespaces, boolean overwrite) throws Exception
   {
     System.out.println("Start zookeeper at " + zkAddress + " in thread "
diff --git a/helix-core/src/test/java/org/apache/helix/ZkUnitTestBase.java b/helix-core/src/test/java/org/apache/helix/ZkUnitTestBase.java
index 4703c19..14d8892 100644
--- a/helix-core/src/test/java/org/apache/helix/ZkUnitTestBase.java
+++ b/helix-core/src/test/java/org/apache/helix/ZkUnitTestBase.java
@@ -73,7 +73,7 @@
   @BeforeSuite(alwaysRun = true)
   public void beforeSuite() throws Exception
   {
-    _zkServer = TestHelper.startZkSever(ZK_ADDR);
+    _zkServer = TestHelper.startZkServer(ZK_ADDR);
     AssertJUnit.assertTrue(_zkServer != null);
 
     // System.out.println("Number of open zkClient before ZkUnitTests: "
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestZkReconnect.java b/helix-core/src/test/java/org/apache/helix/integration/TestZkReconnect.java
index a04e463..0c261e2 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestZkReconnect.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestZkReconnect.java
@@ -51,7 +51,7 @@
     final AtomicReference<ZkServer> zkServerRef = new AtomicReference<ZkServer>();
     final int zkPort = TestHelper.getRandomPort();
     final String zkAddr = String.format("localhost:%d", zkPort);
-    ZkServer zkServer = TestHelper.startZkSever(zkAddr);
+    ZkServer zkServer = TestHelper.startZkServer(zkAddr);
     zkServerRef.set(zkServer);
     
     String className = TestHelper.getTestClassName();
@@ -108,7 +108,7 @@
             try {
                 LOG.info("Restart ZK server");
                 // zkServer.set(TestUtils.startZookeeper(zkDir, zkPort));
-                zkServerRef.set(TestHelper.startZkSever(zkAddr, null, false));
+                zkServerRef.set(TestHelper.startZkServer(zkAddr, null, false));
             } catch (Exception e) {
                 LOG.error(e.getMessage(), e);
             }
diff --git a/helix-core/src/test/java/org/apache/helix/integration/ZkIntegrationTestBase.java b/helix-core/src/test/java/org/apache/helix/integration/ZkIntegrationTestBase.java
index 70d4770..21790b1 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/ZkIntegrationTestBase.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/ZkIntegrationTestBase.java
@@ -66,7 +66,7 @@
     java.util.logging.Logger topJavaLogger = java.util.logging.Logger.getLogger("");
     topJavaLogger.setLevel(Level.WARNING);
     
-    _zkServer = TestHelper.startZkSever(ZK_ADDR);
+    _zkServer = TestHelper.startZkServer(ZK_ADDR);
     AssertJUnit.assertTrue(_zkServer != null);
     ZKClientPool.reset();
 
diff --git a/helix-core/src/test/java/org/apache/helix/util/TestZKClientPool.java b/helix-core/src/test/java/org/apache/helix/util/TestZKClientPool.java
index 323fcef..063399a 100644
--- a/helix-core/src/test/java/org/apache/helix/util/TestZKClientPool.java
+++ b/helix-core/src/test/java/org/apache/helix/util/TestZKClientPool.java
@@ -41,7 +41,7 @@
     System.out.println("START " + testName + " at " + new Date(System.currentTimeMillis()));
 
     String zkAddr = "localhost:2189";
-    ZkServer zkServer = TestHelper.startZkSever(zkAddr);
+    ZkServer zkServer = TestHelper.startZkServer(zkAddr);
     ZkClient zkClient = ZKClientPool.getZkClient(zkAddr);
     
     zkClient.createPersistent("/" + testName, new ZNRecord(testName));
@@ -51,7 +51,7 @@
     TestHelper.stopZkServer(zkServer);
     
     // restart zk 
-    zkServer = TestHelper.startZkSever(zkAddr);
+    zkServer = TestHelper.startZkServer(zkAddr);
     try
     {
       zkClient = ZKClientPool.getZkClient(zkAddr);
