diff --git a/demo-cxx/demo.cc b/demo-cxx/demo.cc
index efa1d1e..cd447ea 100644
--- a/demo-cxx/demo.cc
+++ b/demo-cxx/demo.cc
@@ -15,35 +15,7 @@
 
 const std::string &get_name(const ThingC &thing) { return thing.appname; }
 
-std::unique_ptr<std::vector<uint8_t>> do_thing(SharedThing state) {
-  print_r(*state.y);
-  auto vec = std::unique_ptr<std::vector<uint8_t>>(new std::vector<uint8_t>());
-  for (uint8_t i = 0; i < 10; i++) {
-    vec->push_back(i * i);
-  }
-  return vec;
-}
-
-JsonBlob get_jb(const rust::Vec<uint8_t> &vec) {
-  JsonBlob retval;
-
-  std::cout << "incoming vec length is " << vec.size() << "\n";
-  auto vec_copy = static_cast<std::vector<uint8_t>>(vec);
-  std::cout << "vec_copy length is " << vec_copy.size() << "\n";
-  std::cout << "vec_copy[0] is " << (int)vec_copy[0] << "\n";
-
-  auto blob = std::unique_ptr<std::vector<uint8_t>>(new std::vector<uint8_t>());
-  for (uint8_t i = 0; i < 10; i++) {
-    blob->push_back(i * 2);
-  }
-
-  auto json = std::unique_ptr<std::string>(new std::string("{\"demo\": 23}"));
-
-  retval.json = std::move(json);
-  retval.blob = std::move(blob);
-
-  return retval;
-}
+void do_thing(SharedThing state) { print_r(*state.y); }
 
 } // namespace example
 } // namespace org
diff --git a/demo-cxx/demo.h b/demo-cxx/demo.h
index 9a90716..fafc474 100644
--- a/demo-cxx/demo.h
+++ b/demo-cxx/demo.h
@@ -15,12 +15,10 @@
 };
 
 struct SharedThing;
-struct JsonBlob;
 
 std::unique_ptr<ThingC> make_demo(rust::Str appname);
 const std::string &get_name(const ThingC &thing);
-std::unique_ptr<std::vector<uint8_t>> do_thing(SharedThing state);
-JsonBlob get_jb(const rust::Vec<uint8_t> &vec);
+void do_thing(SharedThing state);
 
 } // namespace example
 } // namespace org
