diff --git a/DnsServerCore.ApplicationCommon/IDnsApplication.cs b/DnsServerCore.ApplicationCommon/IDnsApplication.cs
new file mode 100644
index 00000000..0fce1be2
--- /dev/null
+++ b/DnsServerCore.ApplicationCommon/IDnsApplication.cs
@@ -0,0 +1,42 @@
+/*
+Technitium DNS Server
+Copyright (C) 2021 Shreyas Zare (shreyas@technitium.com)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+
+*/
+
+using System;
+using System.Threading.Tasks;
+
+namespace DnsServerCore.ApplicationCommon
+{
+ ///
+ /// Allows an application to initialize itself using the DNS app config.
+ ///
+ public interface IDnsApplication : IDisposable
+ {
+ ///
+ /// Allows initializing the DNS application with a config. This function is also called when the config is updated to allow reloading.
+ ///
+ /// The DNS server interface object that allows access to DNS server properties.
+ /// The DNS application config stored in the dnsApp.config file.
+ Task InitializeAsync(IDnsServer dnsServer, string config);
+
+ ///
+ /// The description about this app to be shown in the Apps section of the DNS web console.
+ ///
+ string Description { get; }
+ }
+}