diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs
index 223d6070..f230b8af 100644
--- a/SabreTools.DatFiles/DatFile.cs
+++ b/SabreTools.DatFiles/DatFile.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using System.Threading.Tasks;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs
index f9031e2f..a4e65c74 100644
--- a/SabreTools.DatItems/DatItem.cs
+++ b/SabreTools.DatItems/DatItem.cs
@@ -7,6 +7,7 @@ using SabreTools.Core;
using SabreTools.Core.Tools;
using SabreTools.DatItems.Formats;
using SabreTools.FileTypes;
+using SabreTools.Filter;
using SabreTools.Logging;
using SabreTools.Matching;
@@ -375,6 +376,19 @@ namespace SabreTools.DatItems
// TODO: These should be item-specific for better filtering
#region Manipulation
+ ///
+ /// Runs a filter and determines if it passes or not
+ ///
+ /// Filter runner to use for checking
+ /// True if the item passes the filter, false otherwise
+ public bool PassesFilter(FilterRunner filterRunner)
+ {
+ if (!Machine.PassesFilter(filterRunner))
+ return false;
+
+ return filterRunner.Run(_internal);
+ }
+
///
/// Remove a field from the DatItem
///
diff --git a/SabreTools.DatItems/Machine.cs b/SabreTools.DatItems/Machine.cs
index 72cba3bc..cab4f3ee 100644
--- a/SabreTools.DatItems/Machine.cs
+++ b/SabreTools.DatItems/Machine.cs
@@ -542,6 +542,13 @@ namespace SabreTools.DatItems
#region Manipulation
+ ///
+ /// Runs a filter and determines if it passes or not
+ ///
+ /// Filter runner to use for checking
+ /// True if the Machine passes the filter, false otherwise
+ public bool PassesFilter(FilterRunner filterRunner) => filterRunner.Run(_machine);
+
///
/// Remove a field from the Machine
///