diff --git a/Makefile.am b/Makefile.am
index 7669e9b..2579ada 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -30,6 +30,7 @@
 	sdbusplus/server/interface.hpp \
 	sdbusplus/server/manager.hpp \
 	sdbusplus/server/object.hpp \
+	sdbusplus/server/transaction.hpp \
 	sdbusplus/slot.hpp \
 	sdbusplus/timer.hpp \
 	sdbusplus/utility/container_traits.hpp \
@@ -40,20 +41,12 @@
 
 LIBSDBUSPLUS_FILES = \
 	sdbusplus/exception.cpp \
-	sdbusplus/sdbus.cpp
-
-if WANT_TRANSACTION
-nobase_include_HEADERS += \
-	sdbusplus/server/transaction.hpp
-LIBSDBUPLUS_FILES_TRANSACTION = \
+	sdbusplus/sdbus.cpp \
 	sdbusplus/server/transaction.cpp
-endif
 
 libsdbusplusdir = ${libdir}
 libsdbusplus_LTLIBRARIES = libsdbusplus.la
-libsdbusplus_la_SOURCES = \
-	$(LIBSDBUSPLUS_FILES) \
-	$(LIBSDBUPLUS_FILES_TRANSACTION)
+libsdbusplus_la_SOURCES = $(LIBSDBUSPLUS_FILES)
 libsdbusplus_la_LIBADD = $(SYSTEMD_LIBS) $(CODE_COVERAGE_LIBS)
 libsdbusplus_la_LDFLAGS = -version-info 1:0:0 -shared
 libsdbusplus_la_CPPFLAGS = $(CODE_COVERAGE_CPPFLAGS)
diff --git a/configure.ac b/configure.ac
index ec65562..45c50b3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -188,8 +188,4 @@
 AC_CONFIG_FILES([Makefile test/Makefile tools/Makefile tools/setup.py])
 AC_CONFIG_FILES([example/Makefile])
 AC_CONFIG_FILES([sdbusplus.pc])
-AC_CONFIG_FILES([sdbusplus/bus.hpp])
-AC_CONFIG_FILES([sdbusplus/server.hpp])
-AC_CONFIG_FILES([tools/sdbusplus/templates/method.mako.prototype.hpp])
-AC_CONFIG_FILES([tools/sdbusplus/templates/property.mako.prototype.hpp])
 AC_OUTPUT
diff --git a/sdbusplus/bus.hpp.in b/sdbusplus/bus.hpp
similarity index 98%
rename from sdbusplus/bus.hpp.in
rename to sdbusplus/bus.hpp
index 90b7803..8bdabf2 100644
--- a/sdbusplus/bus.hpp.in
+++ b/sdbusplus/bus.hpp
@@ -347,8 +347,9 @@
             // Intentionally ignoring these sd_bus errors
         }
     }
-    auto call_noreply_noerror(message::message& m,
-                              std::optional<SdBusDuration> timeout = std::nullopt)
+    auto call_noreply_noerror(
+        message::message& m,
+        std::optional<SdBusDuration> timeout = std::nullopt)
     {
         return call_noreply_noerror(m, timeout ? timeout->count() : 0);
     }
@@ -500,7 +501,6 @@
 inline bus::bus(busp_t b, sdbusplus::SdBusInterface* intf) :
     _intf(intf), _bus(_intf->sd_bus_ref(b), details::BusDeleter(intf))
 {
-#if @WANT_TRANSACTION@
     // Emitting object added causes a message to get the properties
     // which can trigger a 'transaction' in the server bindings.  If
     // the bus isn't up far enough, this causes an assert deep in
@@ -510,14 +510,12 @@
     {
         get_unique_name();
     }
-#endif
 }
 
 inline bus::bus(busp_t b) :
     _intf(&sdbus_impl),
     _bus(_intf->sd_bus_ref(b), details::BusDeleter(&sdbus_impl))
 {
-#if @WANT_TRANSACTION@
     // Emitting object added causes a message to get the properties
     // which can trigger a 'transaction' in the server bindings.  If
     // the bus isn't up far enough, this causes an assert deep in
@@ -527,13 +525,11 @@
     {
         get_unique_name();
     }
-#endif
 }
 
 inline bus::bus(busp_t b, std::false_type) :
     _intf(&sdbus_impl), _bus(b, details::BusDeleter(&sdbus_impl))
 {
-#if @WANT_TRANSACTION@
     // Emitting object added causes a message to get the properties
     // which can trigger a 'transaction' in the server bindings.  If
     // the bus isn't up far enough, this causes an assert deep in
@@ -543,7 +539,6 @@
     {
         get_unique_name();
     }
-#endif
 }
 
 /* Create a new default connection: system bus if root, session bus if user */
diff --git a/sdbusplus/server.hpp.in b/sdbusplus/server.hpp
similarity index 94%
rename from sdbusplus/server.hpp.in
rename to sdbusplus/server.hpp
index fa38cc9..62ee7f6 100644
--- a/sdbusplus/server.hpp.in
+++ b/sdbusplus/server.hpp
@@ -15,7 +15,5 @@
 #include <sdbusplus/server/interface.hpp>
 #include <sdbusplus/server/manager.hpp>
 #include <sdbusplus/server/object.hpp>
-#include <sdbusplus/vtable.hpp>
-#if @WANT_TRANSACTION@
 #include <sdbusplus/server/transaction.hpp>
-#endif
+#include <sdbusplus/vtable.hpp>
diff --git a/tools/sdbusplus/templates/method.mako.prototype.hpp.in b/tools/sdbusplus/templates/method.mako.prototype.hpp
similarity index 98%
rename from tools/sdbusplus/templates/method.mako.prototype.hpp.in
rename to tools/sdbusplus/templates/method.mako.prototype.hpp
index c9065d3..12fbab3 100644
--- a/tools/sdbusplus/templates/method.mako.prototype.hpp.in
+++ b/tools/sdbusplus/templates/method.mako.prototype.hpp
@@ -114,14 +114,12 @@
         ### Need to add a ref to msg since we attached it to an
         ### sdbusplus::message.
         auto m = message::message(msg);
-#if @WANT_TRANSACTION@
         {
             auto tbus = m.get_bus();
             sdbusplus::server::transaction::Transaction t(tbus, m);
             sdbusplus::server::transaction::set_id
                 (std::hash<sdbusplus::server::transaction::Transaction>{}(t));
         }
-#endif
 
     % if len(method.parameters) != 0:
         ${parameters_as_local()}{};
diff --git a/tools/sdbusplus/templates/property.mako.prototype.hpp.in b/tools/sdbusplus/templates/property.mako.prototype.hpp
similarity index 97%
rename from tools/sdbusplus/templates/property.mako.prototype.hpp.in
rename to tools/sdbusplus/templates/property.mako.prototype.hpp
index 238d6af..e88fb4f 100644
--- a/tools/sdbusplus/templates/property.mako.prototype.hpp.in
+++ b/tools/sdbusplus/templates/property.mako.prototype.hpp
@@ -38,15 +38,12 @@
     try
     {
         auto m = message::message(reply, o->_intf);
-
-#if @WANT_TRANSACTION@
         {
             auto tbus = m.get_bus();
             sdbusplus::server::transaction::Transaction t(tbus, m);
             sdbusplus::server::transaction::set_id
                 (std::hash<sdbusplus::server::transaction::Transaction>{}(t));
         }
-#endif
 
         m.append(o->${property.camelCase}());
     }
@@ -95,15 +92,12 @@
     try
     {
         auto m = message::message(value, o->_intf);
-
-#if @WANT_TRANSACTION@
         {
             auto tbus = m.get_bus();
             sdbusplus::server::transaction::Transaction t(tbus, m);
             sdbusplus::server::transaction::set_id
                 (std::hash<sdbusplus::server::transaction::Transaction>{}(t));
         }
-#endif
 
         ${property.cppTypeParam(interface.name)} v{};
         m.read(v);
