diff --git a/Aaru.Archives/Stfs/Stfs.cs b/Aaru.Archives/Stfs/Stfs.cs
new file mode 100644
index 000000000..1cc5b98ce
--- /dev/null
+++ b/Aaru.Archives/Stfs/Stfs.cs
@@ -0,0 +1,25 @@
+using System;
+using Aaru.CommonTypes.Interfaces;
+
+namespace Aaru.Archives;
+
+public sealed partial class Stfs : IArchive
+{
+#region IArchive Members
+
+ ///
+ public string Name => "Secure Transacted File System (STFS)";
+ ///
+ public Guid Id => new("6DDA6F47-B1B1-407E-892C-7DF0F46741A9");
+ ///
+ public string Author => Authors.NataliaPortillo;
+ ///
+ public bool Opened { get; }
+ ///
+ public ArchiveSupportedFeature ArchiveFeatures => ArchiveSupportedFeature.HasEntryTimestamp |
+ ArchiveSupportedFeature.SupportsFilenames;
+ ///
+ public int NumberOfEntries { get; }
+
+#endregion
+}
\ No newline at end of file
diff --git a/Aaru.Archives/Stfs/Unimplemented.cs b/Aaru.Archives/Stfs/Unimplemented.cs
new file mode 100644
index 000000000..39096e3e7
--- /dev/null
+++ b/Aaru.Archives/Stfs/Unimplemented.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Aaru.CommonTypes.Enums;
+using Aaru.CommonTypes.Interfaces;
+using Aaru.CommonTypes.Structs;
+using FileAttributes = System.IO.FileAttributes;
+
+namespace Aaru.Archives;
+
+public sealed partial class Stfs
+{
+#region IArchive Members
+
+ ///
+ public bool Identify(IFilter filter) => throw new NotImplementedException();
+
+ ///
+ public ErrorNumber Open(IFilter filter, Encoding encoding) => throw new NotImplementedException();
+
+ ///
+ public void Close()
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
+ public ErrorNumber GetFilename(int entryNumber, out string fileName) => throw new NotImplementedException();
+
+ ///
+ public ErrorNumber GetEntryNumber(string fileName, bool caseInsensitiveMatch, out int entryNumber) =>
+ throw new NotImplementedException();
+
+ ///
+ public ErrorNumber GetCompressedSize(int entryNumber, out long length) => throw new NotImplementedException();
+
+ ///
+ public ErrorNumber GetUncompressedSize(int entryNumber, out long length) => throw new NotImplementedException();
+
+ ///
+ public ErrorNumber GetAttributes(int entryNumber, out FileAttributes attributes) =>
+ throw new NotImplementedException();
+
+ ///
+ public ErrorNumber ListXAttr(int entryNumber, out List xattrs) => throw new NotImplementedException();
+
+ ///
+ public ErrorNumber GetXattr(int entryNumber, string xattr, ref byte[] buffer) =>
+ throw new NotImplementedException();
+
+ ///
+ public ErrorNumber Stat(int entryNumber, out FileEntryInfo stat) => throw new NotImplementedException();
+
+ ///
+ public ErrorNumber GetEntry(int entryNumber, out IFilter filter) => throw new NotImplementedException();
+
+ ///
+ public void GetInformation(IFilter filter, Encoding encoding, out string information)
+ {
+ throw new NotImplementedException();
+ }
+
+#endregion
+}
\ No newline at end of file