diff --git a/include-fd/meson.build b/include-fd/meson.build
index 1e85293..3e36cb8 100644
--- a/include-fd/meson.build
+++ b/include-fd/meson.build
@@ -1,6 +1,7 @@
 stdplus_headers += include_directories('.')
 
 install_headers(
+  'stdplus/fd/atomic.hpp',
   'stdplus/fd/create.hpp',
   'stdplus/fd/dupable.hpp',
   'stdplus/fd/fmt.hpp',
diff --git a/include-fd/stdplus/fd/atomic.hpp b/include-fd/stdplus/fd/atomic.hpp
new file mode 100644
index 0000000..904e706
--- /dev/null
+++ b/include-fd/stdplus/fd/atomic.hpp
@@ -0,0 +1,40 @@
+#pragma once
+#include <filesystem>
+#include <stdplus/fd/managed.hpp>
+#include <string>
+#include <string_view>
+
+namespace stdplus
+{
+namespace fd
+{
+
+class AtomicWriter : public stdplus::FdImpl
+{
+  public:
+    AtomicWriter(const std::filesystem::path& filename, int mode,
+                 std::string_view tmpl = {});
+    AtomicWriter(AtomicWriter&& other);
+    AtomicWriter& operator=(AtomicWriter&& other);
+    ~AtomicWriter();
+
+    void commit(bool allow_copy = false);
+
+    inline const std::string& getTmpname() const
+    {
+        return tmpname;
+    }
+
+    int get() const override;
+
+  private:
+    std::filesystem::path filename;
+    int mode;
+    std::string tmpname;
+    ManagedFd fd;
+
+    void cleanup() noexcept;
+};
+
+} // namespace fd
+} // namespace stdplus
diff --git a/include-fd/stdplus/fd/fmt.hpp b/include-fd/stdplus/fd/fmt.hpp
index b0e4c11..de77b68 100644
--- a/include-fd/stdplus/fd/fmt.hpp
+++ b/include-fd/stdplus/fd/fmt.hpp
@@ -1,11 +1,9 @@
 #pragma once
-#include <filesystem>
 #include <fmt/format.h>
 #include <functional>
 #include <stdplus/fd/intf.hpp>
-#include <stdplus/fd/managed.hpp>
-#include <string_view>
 #include <type_traits>
+#include <utility>
 
 namespace fmt
 {
@@ -58,41 +56,5 @@
     void writeIfNeeded();
 };
 
-class FormatToFile
-{
-  public:
-    explicit FormatToFile(std::string_view tmpl = "/tmp/stdplus.XXXXXX");
-    ~FormatToFile();
-    FormatToFile(const FormatToFile&) = delete;
-    FormatToFile(FormatToFile&&) = delete;
-    FormatToFile& operator=(const FormatToFile&) = delete;
-    FormatToFile& operator=(FormatToFile&&) = delete;
-
-    template <typename... Args>
-    inline void append(fmt::format_string<Args...> fmt, Args&&... args)
-    {
-        buf.append(fmt, std::forward<Args>(args)...);
-    }
-    template <typename T, typename... Args,
-              std::enable_if_t<fmt::detail::is_compiled_string<T>::value,
-                               bool> = true>
-    inline void append(const T& t, Args&&... args)
-    {
-        buf.append(t, std::forward<Args>(args)...);
-    }
-
-    void commit(const std::filesystem::path& out, int mode = 0644);
-
-    inline const std::string& getTmpname() const
-    {
-        return tmpname;
-    }
-
-  private:
-    std::string tmpname;
-    ManagedFd fd;
-    FormatBuffer buf;
-};
-
 } // namespace fd
 } // namespace stdplus
