diff --git a/air.cabal b/air.cabal
--- a/air.cabal
+++ b/air.cabal
@@ -1,5 +1,5 @@
 Name:                 air
-Version:              2011.7.25
+Version:              2011.10.19
 Build-type:           Simple
 Synopsis:             air
 Description:          An alternative Haskell Prelude library.
@@ -45,3 +45,4 @@
                   , Air.Data.Record.SimpleLabel.TH
                   , Air.Data.Default
                   , Air.Data.Monoid
+                  , Air.Data.Managed
diff --git a/src/Air/Data/Managed.hs b/src/Air/Data/Managed.hs
new file mode 100644
--- /dev/null
+++ b/src/Air/Data/Managed.hs
@@ -0,0 +1,18 @@
+module Air.Data.Managed where
+
+import Air.Data.Default
+
+class Managed a where
+  initialize :: IO (Maybe a)
+  initialize = return Nothing
+  
+  destroy :: a -> IO ()
+  destroy = const (return ())
+  
+  with_managed_object :: (a -> IO ()) -> IO ()
+  with_managed_object f = do
+    maybe_x <- initialize
+    case maybe_x of
+      Just x -> f x >> destroy x
+      Nothing -> return ()
+
