diff --git a/libweave/libweave.gypi b/libweave/libweave.gypi
index d481996..f65eda7 100644
--- a/libweave/libweave.gypi
+++ b/libweave/libweave.gypi
@@ -35,6 +35,7 @@
       'src/privet/cloud_delegate.cc',
       'src/privet/constants.cc',
       'src/privet/device_delegate.cc',
+      'src/privet/device_ui_kind.cc',
       'src/privet/openssl_utils.cc',
       'src/privet/privet_handler.cc',
       'src/privet/privet_manager.cc',
diff --git a/libweave/src/privet/cloud_delegate.cc b/libweave/src/privet/cloud_delegate.cc
index b4ab288..4c28141 100644
--- a/libweave/src/privet/cloud_delegate.cc
+++ b/libweave/src/privet/cloud_delegate.cc
@@ -99,15 +99,6 @@
     return device_->GetSettings().model_name;
   }
 
-  std::set<std::string> GetServices() const override {
-    std::set<std::string> result;
-    for (base::DictionaryValue::Iterator it{command_defs_}; !it.IsAtEnd();
-         it.Advance()) {
-      result.emplace(it.key());
-    }
-    return result;
-  }
-
   AuthScope GetAnonymousMaxScope() const override {
     return device_->GetSettings().local_anonymous_access_role;
   }
diff --git a/libweave/src/privet/cloud_delegate.h b/libweave/src/privet/cloud_delegate.h
index 3875580..8763fbe 100644
--- a/libweave/src/privet/cloud_delegate.h
+++ b/libweave/src/privet/cloud_delegate.h
@@ -78,10 +78,6 @@
   // Returns the model name of the device.
   virtual std::string GetModelName() const = 0;
 
-  // Returns the list of services supported by device.
-  // E.g. printer, scanner etc. Should match services published on DNS-SD.
-  virtual std::set<std::string> GetServices() const = 0;
-
   // Returns max scope available for anonymous user.
   virtual AuthScope GetAnonymousMaxScope() const = 0;
 
diff --git a/libweave/src/privet/device_ui_kind.cc b/libweave/src/privet/device_ui_kind.cc
new file mode 100644
index 0000000..08b9312
--- /dev/null
+++ b/libweave/src/privet/device_ui_kind.cc
@@ -0,0 +1,42 @@
+// Copyright 2015 The Weave Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "src/privet/device_ui_kind.h"
+
+#include <base/logging.h>
+
+namespace weave {
+namespace privet {
+
+std::string GetDeviceUiKind(const std::string& manifest_id) {
+  CHECK_EQ(5u, manifest_id.size());
+  std::string kind = manifest_id.substr(0, 2);
+  if (kind == "AC")
+    return "accessPoint";
+  if (kind == "AK")
+    return "aggregator";
+  if (kind == "AM")
+    return "camera";
+  if (kind == "AB")
+    return "developmentBoard";
+  if (kind == "AE")
+    return "printer";
+  if (kind == "AF")
+    return "scanner";
+  if (kind == "AD")
+    return "speaker";
+  if (kind == "AL")
+    return "storage";
+  if (kind == "AJ")
+    return "toy";
+  if (kind == "AA")
+    return "vendor";
+  if (kind == "AN")
+    return "video";
+  LOG(FATAL) << "Invalid model id: " << manifest_id;
+  return std::string();
+}
+
+}  // namespace privet
+}  // namespace weave
diff --git a/libweave/src/privet/device_ui_kind.h b/libweave/src/privet/device_ui_kind.h
new file mode 100644
index 0000000..cd05f0e
--- /dev/null
+++ b/libweave/src/privet/device_ui_kind.h
@@ -0,0 +1,18 @@
+// Copyright 2015 The Weave Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef LIBWEAVE_SRC_PRIVET_DEVICE_UI_KIND_H_
+#define LIBWEAVE_SRC_PRIVET_DEVICE_UI_KIND_H_
+
+#include <string>
+
+namespace weave {
+namespace privet {
+
+std::string GetDeviceUiKind(const std::string& manifest_id);
+
+}  // namespace privet
+}  // namespace weave
+
+#endif  // LIBWEAVE_SRC_PRIVET_DEVICE_UI_KIND_H_
diff --git a/libweave/src/privet/mock_delegates.h b/libweave/src/privet/mock_delegates.h
index 159fa09..755110e 100644
--- a/libweave/src/privet/mock_delegates.h
+++ b/libweave/src/privet/mock_delegates.h
@@ -146,7 +146,6 @@
                     const std::string&));
   MOCK_CONST_METHOD0(GetOemName, std::string());
   MOCK_CONST_METHOD0(GetModelName, std::string());
-  MOCK_CONST_METHOD0(GetServices, std::set<std::string>());
   MOCK_CONST_METHOD0(GetAnonymousMaxScope, AuthScope());
   MOCK_CONST_METHOD0(GetConnectionState, const ConnectionState&());
   MOCK_CONST_METHOD0(GetSetupState, const SetupState&());
@@ -177,8 +176,6 @@
     EXPECT_CALL(*this, UpdateDeviceInfo(_, _, _)).WillRepeatedly(Return());
     EXPECT_CALL(*this, GetOemName()).WillRepeatedly(Return("Chromium"));
     EXPECT_CALL(*this, GetModelName()).WillRepeatedly(Return("Brillo"));
-    EXPECT_CALL(*this, GetServices())
-        .WillRepeatedly(Return(std::set<std::string>{}));
     EXPECT_CALL(*this, GetAnonymousMaxScope())
         .WillRepeatedly(Return(AuthScope::kUser));
     EXPECT_CALL(*this, GetConnectionState())
diff --git a/libweave/src/privet/privet_handler.cc b/libweave/src/privet/privet_handler.cc
index fc344ab..d959f66 100644
--- a/libweave/src/privet/privet_handler.cc
+++ b/libweave/src/privet/privet_handler.cc
@@ -20,6 +20,7 @@
 #include "src/privet/cloud_delegate.h"
 #include "src/privet/constants.h"
 #include "src/privet/device_delegate.h"
+#include "src/privet/device_ui_kind.h"
 #include "src/privet/security_delegate.h"
 #include "src/privet/wifi_delegate.h"
 #include "src/string_utils.h"
@@ -216,40 +217,11 @@
   return ReturnError(*error, callback);
 }
 
-std::string GetDeviceKind(const std::string& manifest_id) {
-  CHECK_EQ(5u, manifest_id.size());
-  std::string kind = manifest_id.substr(0, 2);
-  if (kind == "AC")
-    return "accessPoint";
-  if (kind == "AK")
-    return "aggregator";
-  if (kind == "AM")
-    return "camera";
-  if (kind == "AB")
-    return "developmentBoard";
-  if (kind == "AE")
-    return "printer";
-  if (kind == "AF")
-    return "scanner";
-  if (kind == "AD")
-    return "speaker";
-  if (kind == "AL")
-    return "storage";
-  if (kind == "AJ")
-    return "toy";
-  if (kind == "AA")
-    return "vendor";
-  if (kind == "AN")
-    return "video";
-  LOG(FATAL) << "Invalid model id: " << manifest_id;
-  return std::string();
-}
-
 std::unique_ptr<base::DictionaryValue> CreateManifestSection(
-    const std::string& model_id,
     const CloudDelegate& cloud) {
   std::unique_ptr<base::DictionaryValue> manifest(new base::DictionaryValue());
-  manifest->SetString(kInfoManifestUiDeviceKind, GetDeviceKind(model_id));
+  manifest->SetString(kInfoManifestUiDeviceKind,
+                      GetDeviceUiKind(cloud.GetModelId()));
   manifest->SetString(kInfoManifestOemName, cloud.GetOemName());
   manifest->SetString(kInfoManifestModelName, cloud.GetModelName());
   return manifest;
@@ -487,9 +459,11 @@
     output.SetString(kLocationKey, location);
 
   output.SetString(kInfoModelIdKey, model_id);
-  output.Set(kInfoModelManifestKey,
-             CreateManifestSection(model_id, *cloud_).release());
-  output.Set(kInfoServicesKey, ToValue(cloud_->GetServices()).release());
+  output.Set(kInfoModelManifestKey, CreateManifestSection(*cloud_).release());
+  output.Set(
+      kInfoServicesKey,
+      ToValue(std::vector<std::string>{GetDeviceUiKind(cloud_->GetModelId())})
+          .release());
 
   output.Set(
       kInfoAuthenticationKey,
diff --git a/libweave/src/privet/privet_handler_unittest.cc b/libweave/src/privet/privet_handler_unittest.cc
index 6f123e2..d430935 100644
--- a/libweave/src/privet/privet_handler_unittest.cc
+++ b/libweave/src/privet/privet_handler_unittest.cc
@@ -238,7 +238,7 @@
     'version': '3.0',
     'id': 'TestId',
     'name': 'TestDevice',
-    'services': [],
+    'services': [ "developmentBoard" ],
     'modelManifestId': "ABMID",
     'basicModelManifest': {
       'uiDeviceKind': 'developmentBoard',
@@ -275,8 +275,6 @@
   EXPECT_CALL(cloud_, GetDescription())
       .WillRepeatedly(Return("TestDescription"));
   EXPECT_CALL(cloud_, GetLocation()).WillRepeatedly(Return("TestLocation"));
-  EXPECT_CALL(cloud_, GetServices())
-      .WillRepeatedly(Return(std::set<std::string>{"service1", "service2"}));
   EXPECT_CALL(device_, GetHttpEnpoint())
       .WillRepeatedly(Return(std::make_pair(80, 10080)));
   EXPECT_CALL(device_, GetHttpsEnpoint())
@@ -290,10 +288,7 @@
     'name': 'TestDevice',
     'description': 'TestDescription',
     'location': 'TestLocation',
-    'services': [
-      "service1",
-      "service2"
-    ],
+    'services': [ "developmentBoard" ],
     'modelManifestId': "ABMID",
     'basicModelManifest': {
       'uiDeviceKind': 'developmentBoard',
diff --git a/libweave/src/privet/publisher.cc b/libweave/src/privet/publisher.cc
index f323dac..62e980e 100644
--- a/libweave/src/privet/publisher.cc
+++ b/libweave/src/privet/publisher.cc
@@ -11,6 +11,7 @@
 
 #include "src/privet/cloud_delegate.h"
 #include "src/privet/device_delegate.h"
+#include "src/privet/device_ui_kind.h"
 #include "src/privet/wifi_bootstrap_manager.h"
 #include "src/privet/wifi_ssid_generator.h"
 #include "src/string_utils.h"
@@ -54,15 +55,10 @@
   const uint16_t port = device_->GetHttpEnpoint().first;
   DCHECK_NE(port, 0);
 
-  std::string services;
-  if (!cloud_->GetServices().empty())
-    services += "_";
-  services += Join(",_", cloud_->GetServices());
-
   std::vector<std::string> txt_record{
       {"txtvers=3"},
       {"ty=" + name},
-      {"services=" + services},
+      {"services=" + GetDeviceUiKind(model_id)},
       {"id=" + cloud_->GetDeviceId()},
       {"mmid=" + model_id},
       {"flags=" + WifiSsidGenerator{cloud_, wifi_}.GenerateFlags()},
diff --git a/libweave/src/weave_unittest.cc b/libweave/src/weave_unittest.cc
index eb41294..6ff3f6d 100644
--- a/libweave/src/weave_unittest.cc
+++ b/libweave/src/weave_unittest.cc
@@ -190,9 +190,9 @@
   }
 
   void InitDnsSdPublishing(bool registered, const std::string& flags) {
-    std::vector<std::string> txt{{"id=TEST_DEVICE_ID"}, {"flags=" + flags},
-                                 {"mmid=ABCDE"},        {"services=_base"},
-                                 {"txtvers=3"},         {"ty=TEST_NAME"}};
+    std::vector<std::string> txt{
+        {"id=TEST_DEVICE_ID"},         {"flags=" + flags}, {"mmid=ABCDE"},
+        {"services=developmentBoard"}, {"txtvers=3"},      {"ty=TEST_NAME"}};
     if (registered) {
       txt.push_back("gcd_id=CLOUD_ID");
 
