--- /dev/null
+module Network.DNS.Named.Zone
+ ( Zone(..)
+ , ZoneFinder(..)
+
+ , defaultRootZone
+ )
+ where
+
+import Data.Maybe
+import Network.DNS.Message
+import Network.DNS.Named.Responder
+
+
+data Zone
+ = Zone {
+ zoneName :: !DomainName
+ , zoneResponders :: ![SomeResponder]
+ }
+
+class ZoneFinder a where
+ findZone :: a -> DomainName -> IO Zone
+
+instance ZoneFinder (DomainName -> Zone) where
+ findZone = (return .)
+
+instance ZoneFinder (DomainName -> IO Zone) where
+ findZone = id
+
+instance ZoneFinder (DomainName -> Maybe Zone) where
+ findZone = ((return . fromMaybe defaultRootZone) .)
+
+instance ZoneFinder (DomainName -> IO (Maybe Zone)) where
+ findZone = (fmap (fromMaybe defaultRootZone) .)
+
+
+defaultRootZone :: Zone
+defaultRootZone = error "FIXME: defaultRootZone is not implemented yet"
\ No newline at end of file