diff --git a/test/gen/server/Test2/meson.build b/test/gen/server/Test2/meson.build
new file mode 100644
index 0000000..683bce6
--- /dev/null
+++ b/test/gen/server/Test2/meson.build
@@ -0,0 +1,38 @@
+# Generated file; do not modify.
+
+sdbusplus_current_path = 'server/Test2'
+
+generated_sources += custom_target(
+    'server/Test2__cpp'.underscorify(),
+    input: ['../../../yaml/server/Test2.interface.yaml'],
+    output: [
+        'common.hpp',
+        'server.hpp',
+        'server.cpp',
+        'aserver.hpp',
+        'client.hpp',
+    ],
+    depend_files: sdbusplusplus_depfiles,
+    command: [
+        sdbuspp_gen_meson_prog,
+        '--command',
+        'cpp',
+        '--output',
+        meson.current_build_dir(),
+        '--tool',
+        sdbusplusplus_prog,
+        '--directory',
+        meson.current_source_dir() / '../../../yaml',
+        'server/Test2',
+    ],
+    install: should_generate_cpp,
+    install_dir: [
+        get_option('includedir') / sdbusplus_current_path,
+        get_option('includedir') / sdbusplus_current_path,
+        false,
+        get_option('includedir') / sdbusplus_current_path,
+        get_option('includedir') / sdbusplus_current_path,
+    ],
+    build_by_default: should_generate_cpp,
+)
+
diff --git a/test/gen/server/Test3/meson.build b/test/gen/server/Test3/meson.build
new file mode 100644
index 0000000..2da40be
--- /dev/null
+++ b/test/gen/server/Test3/meson.build
@@ -0,0 +1,38 @@
+# Generated file; do not modify.
+
+sdbusplus_current_path = 'server/Test3'
+
+generated_sources += custom_target(
+    'server/Test3__cpp'.underscorify(),
+    input: ['../../../yaml/server/Test3.interface.yaml'],
+    output: [
+        'common.hpp',
+        'server.hpp',
+        'server.cpp',
+        'aserver.hpp',
+        'client.hpp',
+    ],
+    depend_files: sdbusplusplus_depfiles,
+    command: [
+        sdbuspp_gen_meson_prog,
+        '--command',
+        'cpp',
+        '--output',
+        meson.current_build_dir(),
+        '--tool',
+        sdbusplusplus_prog,
+        '--directory',
+        meson.current_source_dir() / '../../../yaml',
+        'server/Test3',
+    ],
+    install: should_generate_cpp,
+    install_dir: [
+        get_option('includedir') / sdbusplus_current_path,
+        get_option('includedir') / sdbusplus_current_path,
+        false,
+        get_option('includedir') / sdbusplus_current_path,
+        get_option('includedir') / sdbusplus_current_path,
+    ],
+    build_by_default: should_generate_cpp,
+)
+
diff --git a/test/gen/server/meson.build b/test/gen/server/meson.build
index 34c9b4b..142903d 100644
--- a/test/gen/server/meson.build
+++ b/test/gen/server/meson.build
@@ -1,5 +1,7 @@
 # Generated file; do not modify.
 subdir('Test')
+subdir('Test2')
+subdir('Test3')
 
 sdbusplus_current_path = 'server'
 
@@ -25,3 +27,47 @@
     build_by_default: should_generate_markdown,
 )
 
+generated_markdown += custom_target(
+    'server/Test2__markdown'.underscorify(),
+    input: ['../../yaml/server/Test2.interface.yaml'],
+    output: ['Test2.md'],
+    depend_files: sdbusplusplus_depfiles,
+    command: [
+        sdbuspp_gen_meson_prog,
+        '--command',
+        'markdown',
+        '--output',
+        meson.current_build_dir(),
+        '--tool',
+        sdbusplusplus_prog,
+        '--directory',
+        meson.current_source_dir() / '../../yaml',
+        'server/Test2',
+    ],
+    install: should_generate_markdown,
+    install_dir: [inst_markdown_dir / sdbusplus_current_path],
+    build_by_default: should_generate_markdown,
+)
+
+generated_markdown += custom_target(
+    'server/Test3__markdown'.underscorify(),
+    input: ['../../yaml/server/Test3.interface.yaml'],
+    output: ['Test3.md'],
+    depend_files: sdbusplusplus_depfiles,
+    command: [
+        sdbuspp_gen_meson_prog,
+        '--command',
+        'markdown',
+        '--output',
+        meson.current_build_dir(),
+        '--tool',
+        sdbusplusplus_prog,
+        '--directory',
+        meson.current_source_dir() / '../../yaml',
+        'server/Test3',
+    ],
+    install: should_generate_markdown,
+    install_dir: [inst_markdown_dir / sdbusplus_current_path],
+    build_by_default: should_generate_markdown,
+)
+
diff --git a/test/gen/test_aserver_emit_interfaces_added_signal.cpp b/test/gen/test_aserver_emit_interfaces_added_signal.cpp
new file mode 100644
index 0000000..acc6ddc
--- /dev/null
+++ b/test/gen/test_aserver_emit_interfaces_added_signal.cpp
@@ -0,0 +1,64 @@
+#include "server/Test/aserver.hpp"
+#include "server/Test/common.hpp"
+#include "server/Test2/aserver.hpp"
+#include "server/Test2/common.hpp"
+
+#include <sdbusplus/async/context.hpp>
+#include <sdbusplus/async/match.hpp>
+#include <sdbusplus/async/timer.hpp>
+
+class A : public sdbusplus::aserver::server::Test<A>
+{};
+
+auto waitForMatch(sdbusplus::async::context& ctx,
+                  sdbusplus::async::match& ifcAdded) -> sdbusplus::async::task<>
+{
+    auto x = co_await ifcAdded.next();
+
+    ctx.request_stop();
+}
+
+auto shouldEmitSignal(sdbusplus::async::context& ctx)
+    -> sdbusplus::async::task<>
+{
+    co_await sdbusplus::async::sleep_for(ctx, std::chrono::seconds(1));
+
+    auto x =
+        std::variant<A::EnumOne, std::string, A::EnumTwo>(A::EnumOne::OneA);
+
+    sdbusplus::common::server::Test::properties_t props{
+        0, 0, 0, 0, 0, 0, 0, std::string("/my/path"), 1.0, 1.0, 1.0, 1.0, x};
+
+    auto t2 = std::make_unique<sdbusplus::aserver::server::Test<A>>(
+        ctx, "/test/something", props);
+
+    t2->emit_added();
+
+    co_await sdbusplus::async::sleep_for(ctx, std::chrono::seconds(1));
+
+    co_return;
+}
+
+int main()
+{
+    sdbusplus::async::context ctx;
+
+    std::srand(std::chrono::system_clock::now().time_since_epoch().count());
+    std::string busName =
+        "xyz.openbmc_project.TestingInterfacesAdded" + std::to_string(rand());
+
+    ctx.request_name(busName.c_str());
+
+    sdbusplus::server::manager_t manager(ctx.get_bus(), "/test");
+
+    sdbusplus::async::match ifcAdded(
+        ctx, sdbusplus::bus::match::rules::interfacesAdded() +
+                 sdbusplus::bus::match::rules::sender(busName));
+
+    ctx.spawn(waitForMatch(ctx, ifcAdded));
+    ctx.spawn(shouldEmitSignal(ctx));
+
+    ctx.run();
+
+    return 0;
+}
diff --git a/test/gen/test_aserver_multiple_interfaces.cpp b/test/gen/test_aserver_multiple_interfaces.cpp
new file mode 100644
index 0000000..03abd69
--- /dev/null
+++ b/test/gen/test_aserver_multiple_interfaces.cpp
@@ -0,0 +1,101 @@
+#include "server/Test/aserver.hpp"
+#include "server/Test/client.hpp"
+#include "server/Test2/aserver.hpp"
+#include "server/Test2/client.hpp"
+#include "server/Test3/aserver.hpp"
+
+#include <sdbusplus/async/context.hpp>
+#include <sdbusplus/async/match.hpp>
+#include <sdbusplus/async/timer.hpp>
+
+class A
+{};
+
+auto constructInterfaces(sdbusplus::async::context& ctx, std::string& busName)
+    -> sdbusplus::async::task<>
+{
+    auto x = std::variant<sdbusplus::common::server::Test::EnumOne, std::string,
+                          sdbusplus::common::server::Test::EnumTwo>(
+        sdbusplus::common::server::Test::EnumOne::OneA);
+
+    sdbusplus::common::server::Test::properties_t props{
+        832, 0, 0, 0, 0, 0, 0, std::string("/my/path"), 1.0, 1.0, 1.0, 1.0, x};
+
+    sdbusplus::common::server::Test2::properties_t props2{4200, 2};
+
+    sdbusplus::aserver::server::Test<A> a0(ctx, "/0");
+
+    sdbusplus::aserver::server::Test<A> a1(ctx, "/1", props);
+
+    // construct without properties
+    sdbusplus::async::server_t<A, sdbusplus::aserver::server::Test> a2(
+        ctx, "/2");
+
+    // construct Test with properties
+    auto a3 = std::make_unique<
+        sdbusplus::async::server_t<A, sdbusplus::aserver::server::Test>>(
+        ctx, "/3", props);
+
+    // construct Test2 with properties
+    sdbusplus::async::server_t<A, sdbusplus::aserver::server::Test2> a4(
+        ctx, "/4", props2);
+
+    // does not compile, (wronge type of properties!)
+    // sdbusplus::async::server_t<A, sdbusplus::aserver::server::Test2> ax(ctx,
+    // "/x", props);
+
+    // construct with both interfaces, no properties
+    sdbusplus::async::server_t<A, sdbusplus::aserver::server::Test,
+                               sdbusplus::aserver::server::Test2>
+        a5(ctx, "/5");
+
+    // construct with both interfaces and properties
+    auto a6 = std::make_unique<
+        sdbusplus::async::server_t<A, sdbusplus::aserver::server::Test,
+                                   sdbusplus::aserver::server::Test2>>(
+        ctx, "/6", props, props2);
+
+    // does not compile, (wrong order of properties!)
+    // auto a7 = std::make_unique<
+    //    sdbusplus::async::server_t<A, sdbusplus::aserver::server::Test,
+    //                               sdbusplus::aserver::server::Test2>>(
+    //    ctx, "/7", props2, props);
+
+    auto a8 = std::make_unique<sdbusplus::async::server_t<
+        A, sdbusplus::aserver::server::Test, sdbusplus::aserver::server::Test2,
+        sdbusplus::aserver::server::Test3>>(ctx, "/8", props, props2,
+                                            std::nullopt);
+
+    auto client =
+        sdbusplus::client::server::Test(ctx).service(busName).path("/3");
+
+    assert(co_await client.some_value() == 832);
+
+    auto client2 =
+        sdbusplus::client::server::Test2(ctx).service(busName).path("/6");
+
+    assert(co_await client2.new_value() == 4200);
+
+    ctx.request_stop();
+
+    co_return;
+}
+
+int main()
+{
+    sdbusplus::async::context ctx;
+
+    std::srand(std::chrono::system_clock::now().time_since_epoch().count());
+    std::string busName = "xyz.openbmc_project.TestingMultipleInterfaces" +
+                          std::to_string(rand());
+
+    ctx.request_name(busName.c_str());
+
+    sdbusplus::server::manager_t manager(ctx.get_bus(), "/test");
+
+    ctx.spawn(constructInterfaces(ctx, busName));
+
+    ctx.run();
+
+    return 0;
+}
diff --git a/test/meson.build b/test/meson.build
index aa07577..4fe9b15 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -117,6 +117,8 @@
 uninit_tests = [
     'test_server_no_uninitialized_value_constructor',
     'test_aserver_no_uninitialized_value_constructor',
+    'test_aserver_emit_interfaces_added_signal',
+    'test_aserver_multiple_interfaces',
 ]
 
 foreach t : uninit_tests
diff --git a/test/yaml/server/Test2.interface.yaml b/test/yaml/server/Test2.interface.yaml
new file mode 100644
index 0000000..d9fe45e
--- /dev/null
+++ b/test/yaml/server/Test2.interface.yaml
@@ -0,0 +1,9 @@
+description: >
+    A test interface
+properties:
+    - name: NewValue
+      type: int64
+    - name: OtherValue
+      type: int64
+      flags:
+          - const
diff --git a/test/yaml/server/Test3.interface.yaml b/test/yaml/server/Test3.interface.yaml
new file mode 100644
index 0000000..8516d31
--- /dev/null
+++ b/test/yaml/server/Test3.interface.yaml
@@ -0,0 +1,2 @@
+description: >
+    A test interface with no properties.
