 
 extension YapDB {
 
-    /**
-    The base class for other YapDatabaseView wrapper types.
-    */
-    public class BaseView {
+    public class BaseExtension {
         let name: String
         let version: String
         let collections: Set<String>?
         let persistent: Bool
+
+        init(name n: String, version v: String = "1.0", persistent p: Bool = true, collections c: [String]? = .None) {
+            name = n
+            version = v
+            persistent = p
+            collections = c.map { Set($0) }
+        }
+
+        /**
+        Utility function which can check if the extension is already registed in YapDatabase.
+
+        :param: database A YapDatabase instance
+        :returns: A Bool
+        */
+        public func isRegisteredInDatabase(database: YapDatabase) -> Bool {
+            return (database.registeredExtension(name) as? YapDatabaseView) != .None
+        }
+    }
+
+    /**
+    The base class for other YapDatabaseView wrapper types.
+    */
+    public class BaseView: BaseExtension {
 
         var options: YapDatabaseViewOptions {
             get {

    is a YapDB.Fetch type. This allows for filtering of other filters, and 
    even filtering of search results.
    */
    public class Filter: BaseView, YapDatabaseViewProducer, YapDatabaseViewRegistrar {

        /**
        An enum to make creating YapDatabaseViewFiltering easier.

                return options
            }
        }
    }
}

