diff --git a/eventmesh-dashboard-common/pom.xml b/eventmesh-dashboard-common/pom.xml
index 6fc3e3b..2901172 100644
--- a/eventmesh-dashboard-common/pom.xml
+++ b/eventmesh-dashboard-common/pom.xml
@@ -24,11 +24,6 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
 
         <!-- Utility -->
         <dependency>
diff --git a/eventmesh-dashboard-console/pom.xml b/eventmesh-dashboard-console/pom.xml
index 9013082..b071854 100644
--- a/eventmesh-dashboard-console/pom.xml
+++ b/eventmesh-dashboard-console/pom.xml
@@ -30,11 +30,6 @@
             <artifactId>eventmesh-dashboard-service</artifactId>
             <version>0.0.1-SNAPSHOT</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.eventmesh.dashboard.core</groupId>
-            <artifactId>eventmesh-dashboard-core</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-        </dependency>
 
         <!-- AOP -->
         <dependency>
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java
index 4472036..53a951a 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java
@@ -24,7 +24,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-@SpringBootApplication(scanBasePackages = {"org.apache.eventmesh.dashboard.console", "org.apache.eventmesh.dashboard.core"})
+@SpringBootApplication
 @EnableTransactionManagement
 public class EventMeshDashboardApplication {
 
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java
index 847a24a..37e9049 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java
@@ -19,7 +19,6 @@
 
 import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
@@ -30,7 +29,9 @@
 @RestController
 public class ConnectionController {
 
-    @Autowired
+    /**
+     * TODO expose implement by FunctionManager
+     */
     ConnectionCore connectionCore;
 
     /**
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/MetricsController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/MetricsController.java
index 38f5b1a..689f833 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/MetricsController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/MetricsController.java
@@ -24,8 +24,10 @@
 
 @RestController
 public class MetricsController {
+
     @GetMapping("/druid/stat")
     public Object druidStat() {
         return DruidStatManagerFacade.getInstance().getDataSourceStatDataList();
     }
+
 }
\ No newline at end of file
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java
index 026a524..1af09ae 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java
@@ -23,7 +23,6 @@
 
 import java.util.List;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -33,7 +32,9 @@
 @RequestMapping("/api/v1")
 public class SubscriptionController {
 
-    @Autowired
+    /**
+     * TODO expose implement by FunctionManager
+     */
     SubscriptionCore subscriptionCore;
 
     // the subscription dataId naming pattern of EventMesh clients: ip-protocol
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java
index a005d46..1f6c601 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java
@@ -25,7 +25,6 @@
 
 import java.util.List;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -40,7 +39,9 @@
 @RequestMapping("/topic")
 public class TopicController {
 
-    @Autowired
+    /**
+     * TODO expose implement by FunctionManager
+     */
     TopicCore topicCore;
 
     /**
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/BeanTypeConfig.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/BeanTypeConfig.java
deleted file mode 100644
index 03193f1..0000000
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/BeanTypeConfig.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.eventmesh.dashboard.core.config;
-
-import org.apache.eventmesh.dashboard.common.constant.ConfigConst;
-import org.apache.eventmesh.dashboard.core.meta.EtcdConnectionCore;
-import org.apache.eventmesh.dashboard.core.meta.EtcdSubscriptionCore;
-import org.apache.eventmesh.dashboard.core.meta.NacosConnectionCore;
-import org.apache.eventmesh.dashboard.core.meta.NacosSubscriptionCore;
-import org.apache.eventmesh.dashboard.core.store.RocketmqTopicCore;
-import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
-import org.apache.eventmesh.dashboard.service.meta.SubscriptionCore;
-import org.apache.eventmesh.dashboard.service.store.TopicCore;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * Use different registry SDK depending on the configured meta type;
- * Use different storage SDK depending on the configured storage type.
- * TODO get configs from DB (console module's work)
- */
-@Deprecated
-@Configuration
-public class BeanTypeConfig {
-
-    private final AdminProperties adminProperties;
-
-    public BeanTypeConfig(AdminProperties adminProperties) {
-        this.adminProperties = adminProperties;
-    }
-
-    @Bean
-    public ConnectionCore connectionCore() {
-        switch (adminProperties.getMeta().getType()) {
-            case ConfigConst.META_TYPE_NACOS:
-                return new NacosConnectionCore(adminProperties);
-            case ConfigConst.META_TYPE_ETCD:
-                return new EtcdConnectionCore();
-            default:
-                throw new IllegalArgumentException("Unsupported EventMesh Meta type: " + adminProperties.getMeta().getType());
-        }
-    }
-
-    @Bean
-    public SubscriptionCore subscriptionCore() {
-        switch (adminProperties.getMeta().getType()) {
-            case ConfigConst.META_TYPE_NACOS:
-                return new NacosSubscriptionCore(adminProperties);
-            case ConfigConst.META_TYPE_ETCD:
-                return new EtcdSubscriptionCore();
-            default:
-                throw new IllegalArgumentException("Unsupported EventMesh Meta type: " + adminProperties.getMeta().getType());
-        }
-    }
-
-    @Bean
-    public TopicCore topicCore() {
-        switch (adminProperties.getStore().getType()) {
-            case ConfigConst.STORE_TYPE_STANDALONE:
-                return null; // TODO StandaloneTopicService
-            case ConfigConst.STORE_TYPE_ROCKETMQ:
-                return new RocketmqTopicCore(adminProperties);
-            case ConfigConst.STORE_TYPE_KAFKA:
-                return null; // TODO KafkaTopicService
-            default:
-                throw new IllegalArgumentException("Unsupported EventMesh Store type: " + adminProperties.getStore().getType());
-        }
-    }
-}
\ No newline at end of file
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosConnectionCore.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosConnectionCore.java
deleted file mode 100644
index a9e62ad..0000000
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosConnectionCore.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.eventmesh.dashboard.core.meta;
-
-import org.apache.eventmesh.dashboard.core.config.AdminProperties;
-import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
-
-import org.springframework.stereotype.Service;
-
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-@Service
-public class NacosConnectionCore implements ConnectionCore {
-
-    public NacosConnectionCore(AdminProperties adminProperties) {
-    }
-
-}
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionCore.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/EtcdConnectionCore.java
similarity index 89%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionCore.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/EtcdConnectionCore.java
index 65f836b..0a994bc 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionCore.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/EtcdConnectionCore.java
@@ -15,16 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.meta;
+package org.apache.eventmesh.dashboard.core.meta.connection;
 
 import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
 
-import org.springframework.stereotype.Service;
-
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-@Service
 public class EtcdConnectionCore implements ConnectionCore {
 
 }
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionCore.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/NacosConnectionCore.java
similarity index 84%
copy from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionCore.java
copy to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/NacosConnectionCore.java
index 65f836b..6f02652 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionCore.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/NacosConnectionCore.java
@@ -15,16 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.meta;
+package org.apache.eventmesh.dashboard.core.meta.connection;
 
 import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
 
-import org.springframework.stereotype.Service;
-
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-@Service
-public class EtcdConnectionCore implements ConnectionCore {
+public class NacosConnectionCore implements ConnectionCore {
 
 }
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdSubscriptionCore.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/EtcdSubscriptionCore.java
similarity index 92%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdSubscriptionCore.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/EtcdSubscriptionCore.java
index 7fdd957..4fd39c8 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdSubscriptionCore.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/EtcdSubscriptionCore.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.meta;
+package org.apache.eventmesh.dashboard.core.meta.subscription;
 
 import org.apache.eventmesh.dashboard.common.dto.Result;
 import org.apache.eventmesh.dashboard.common.model.SubscriptionInfo;
@@ -23,12 +23,9 @@
 
 import java.util.List;
 
-import org.springframework.stereotype.Service;
-
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-@Service
 public class EtcdSubscriptionCore implements SubscriptionCore {
 
     @Override
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosSubscriptionCore.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/NacosSubscriptionCore.java
similarity index 98%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosSubscriptionCore.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/NacosSubscriptionCore.java
index d4436e0..0d665c6 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosSubscriptionCore.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/NacosSubscriptionCore.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.meta;
+package org.apache.eventmesh.dashboard.core.meta.subscription;
 
 import static org.apache.eventmesh.dashboard.common.enums.Status.NACOS_EMPTY_RESP_ERR;
 import static org.apache.eventmesh.dashboard.common.enums.Status.NACOS_GET_CONFIGS_ERR;
@@ -42,7 +42,6 @@
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
@@ -57,7 +56,6 @@
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-@Service
 public class NacosSubscriptionCore implements SubscriptionCore {
 
     AdminProperties adminProperties;
@@ -114,7 +112,7 @@
 
     /**
      * Retrieve a list of configs with Nacos OpenAPI, because Nacos SDK doesn't support listing and fuzzy matching.
-     *
+     * <p>
      * TODO Granularity should be based on subscriptions rather than Runtime;
      * retrieve all subscriptions for each Runtime, rather than retrieving subscriptions for each individual Runtime.
      */
