diff --git a/include/libpy/autoclass.h b/include/libpy/autoclass.h
index e909f31c..f553700b 100644
--- a/include/libpy/autoclass.h
+++ b/include/libpy/autoclass.h
@@ -1784,10 +1784,13 @@ struct autoclass_interface final
     }
 
 public:
-    autoclass_interface(std::string name = util::type_name<I>(), int extra_flags = 0)
+    autoclass_interface(py::borrowed_ref<> module,
+                        std::string name = util::type_name<I>(),
+                        int extra_flags = 0)
         : detail::autoclass_impl<autoclass_interface<I>,
                                  I,
                                  detail::autoclass_interface_object<I>>(
+              module,
               std::move(name),
               extra_flags | Py_TPFLAGS_BASETYPE) {
 
@@ -1795,6 +1798,9 @@ struct autoclass_interface final
         this->add_slot(Py_tp_new, disabled_new);
     }
 
+    autoclass_interface(std::string name = util::type_name<I>(), int extra_flags = 0)
+        : autoclass_interface(nullptr, std::move(name), extra_flags) {}
+
     template<auto impl, typename U = I>
     [[noreturn]] autoclass_interface& new_() {
         static_assert(!std::is_same_v<U, U>, "cannot add a new to interface types");
@@ -1836,16 +1842,22 @@ struct autoclass_interface_instance final
     }
 
 public:
-    autoclass_interface_instance(std::string name = util::type_name<T>(),
+    autoclass_interface_instance(py::borrowed_ref<> module,
+                                 std::string name = util::type_name<T>(),
                                  int extra_flags = 0)
         : detail::autoclass_impl<autoclass_interface_instance,
                                  T,
                                  detail::autoclass_interface_instance_object<T, I>,
                                  detail::initialize_interface_type<
                                      detail::autoclass_interface_instance_object<T, I>>>(
+              module,
               std::move(name),
               extra_flags,
               resolve_pybase()) {}
+
+    autoclass_interface_instance(std::string name = util::type_name<T>(),
+                                 int extra_flags = 0)
+        : autoclass_interface_instance(nullptr, name, extra_flags) {}
 };
 
 template<typename T>