diff --git a/SabreTools.Models/Internal/Header.cs b/SabreTools.Models/Internal/Header.cs
new file mode 100644
index 00000000..4d47fdc6
--- /dev/null
+++ b/SabreTools.Models/Internal/Header.cs
@@ -0,0 +1,153 @@
+namespace SabreTools.Models.Internal
+{
+ ///
+ /// Format-agnostic representation of metadata header data
+ ///
+ public class Header : DictionaryBase
+ {
+ #region Keys
+
+ /// string
+ public const string AuthorKey = "author";
+
+ /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
+ public const string BiosModeKey = "biosmode";
+
+ /// string
+ public const string BuildKey = "build";
+
+ /// TODO: This needs an internal model OR mapping to fields
+ /// CanOpen
+ public const string CanOpenKey = "canOpen";
+
+ /// string
+ public const string CategoryKey = "category";
+
+ /// string
+ public const string CommentKey = "comment";
+
+ /// TODO: This needs an internal model OR mapping to fields
+ /// Configuration
+ public const string ConfigurationKey = "configuration";
+
+ /// string
+ public const string DateKey = "date";
+
+ /// string
+ public const string DatVersionKey = "datversion";
+
+ /// (yes|no) "no"
+ public const string DebugKey = "debug";
+
+ /// string
+ public const string DescriptionKey = "description";
+
+ /// string
+ public const string EmailKey = "email";
+
+ /// string
+ public const string EmulatorVersionKey = "emulatorversion";
+
+ /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
+ public const string ForceMergingKey = "forcemerging";
+
+ /// (obsolete|required|ignore) "obsolete"
+ public const string ForceNodumpKey = "forcenodump";
+
+ /// (zip|unzip) "zip"
+ public const string ForcePackingKey = "forcepacking";
+
+ /// (yes|no) "yes"
+ public const string ForceZippingKey = "forcezipping";
+
+ /// string, string[]
+ public const string HeaderKey = "header";
+
+ /// string
+ public const string HomepageKey = "homepage";
+
+ /// string
+ public const string IdKey = "id";
+
+ /// TODO: This needs an internal model OR mapping to fields
+ /// Search
+ public const string ImagesKey = "images";
+
+ /// string
+ public const string ImFolderKey = "imFolder";
+
+ /// TODO: This needs an internal model OR mapping to fields
+ /// Infos
+ public const string InfosKey = "infos";
+
+ /// (yes|no) "no"
+ public const string LockBiosModeKey = "lockbiosmode";
+
+ /// (yes|no) "no"
+ public const string LockRomModeKey = "lockrommode";
+
+ /// (yes|no) "no"
+ public const string LockSampleModeKey = "locksamplemode";
+
+ /// string
+ public const string MameConfigKey = "mameconfig";
+
+ /// string
+ public const string NameKey = "name";
+
+ /// TODO: This needs an internal model OR mapping to fields
+ /// NewDat
+ public const string NewDatKey = "newDat";
+
+ /// string
+ public const string NoNamespaceSchemaLocationKey = "noNamespaceSchemaLocation";
+
+ /// string
+ public const string NotesKey = "notes";
+
+ /// string
+ public const string PluginKey = "plugin";
+
+ /// string
+ public const string RefNameKey = "refname";
+
+ /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
+ public const string RomModeKey = "rommode";
+
+ /// string
+ public const string RomTitleKey = "romTitle";
+
+ /// string
+ public const string RootDirKey = "rootdir";
+
+ /// (none|split|merged|nonmerged|fullmerged|device|full) "split"
+ public const string SampleModeKey = "samplemode";
+
+ /// string
+ public const string ScreenshotsHeightKey = "screenshotsHeight";
+
+ /// string
+ public const string ScreenshotsWidthKey = "screenshotsWidth";
+
+ /// TODO: This needs an internal model OR mapping to fields
+ /// Search
+ public const string SearchKey = "search";
+
+ /// string
+ public const string SystemKey = "system";
+
+ /// string
+ public const string TimestampKey = "timestamp";
+
+ /// string
+ public const string TypeKey = "type";
+
+ /// string
+ public const string UrlKey = "url";
+
+ /// string
+ public const string VersionKey = "version";
+
+ #endregion
+ }
+}
\ No newline at end of file