diff --git a/order-maintenance.cabal b/order-maintenance.cabal
--- a/order-maintenance.cabal
+++ b/order-maintenance.cabal
@@ -1,5 +1,5 @@
 Name:          order-maintenance
-Version:       0.1.0.0
+Version:       0.1.1.0
 Cabal-Version: >= 1.16
 Build-Type:    Simple
 License:       BSD3
@@ -9,7 +9,7 @@
 Maintainer:    wolfgang@cs.ioc.ee
 Stability:     provisional
 Homepage:      http://darcs.wolfgang.jeltsch.info/haskell/order-maintenance
-Package-URL:   http://hackage.haskell.org/packages/archive/order-maintenance/0.1.0.0/order-maintenance-0.1.0.0.tar.gz
+Package-URL:   http://hackage.haskell.org/packages/archive/order-maintenance/0.1.1.0/order-maintenance-0.1.1.0.tar.gz
 Synopsis:      Algorithms for the order maintenance problem with a safe
                interface
 Description:   This package is about order maintenance.
@@ -25,7 +25,7 @@
 
     Type:     darcs
     Location: http://darcs.wolfgang.jeltsch.info/haskell/order-maintenance/main
-    Tag:      order-maintenance-0.1.0.0
+    Tag:      order-maintenance-0.1.1.0
 
 Library
 
@@ -48,6 +48,7 @@
                      Data.Order
                      Data.Order.Algorithm
                      Data.Order.Raw
+                     System.IO.Order
 
     Other-Modules: Control.Monad.Trans.Order.Lazy.Type
                    Data.Order.Algorithm.Type
@@ -68,7 +69,7 @@
                    containers            >= 0.5  && < 0.6,
                    QuickCheck            >= 2.6  && < 3,
                    transformers          >= 0.3  && < 0.5,
-                   order-maintenance     == 0.1.0.0
+                   order-maintenance     == 0.1.1.0
 
     Default-Language: Haskell2010
 
diff --git a/src/library/System/IO/Order.hs b/src/library/System/IO/Order.hs
new file mode 100644
--- /dev/null
+++ b/src/library/System/IO/Order.hs
@@ -0,0 +1,35 @@
+module System.IO.Order (
+
+    newMinimum,
+    newMaximum,
+    newAfter,
+    newBefore
+
+) where
+
+-- Data
+
+import           Data.Order
+import           Data.Order.Internals (OrderRep, newOrderRep)
+import qualified Data.Order.Internals as Internals
+import           Data.Order.Raw.Algorithm
+
+-- System
+
+import System.IO.Unsafe
+
+newMinimum :: IO (Element Global)
+newMinimum = Internals.newMinimum globalOrderRep
+
+newMaximum :: IO (Element Global)
+newMaximum = Internals.newMaximum globalOrderRep
+
+newAfter :: Element Global -> IO (Element Global)
+newAfter elem = Internals.newAfter elem globalOrderRep
+
+newBefore :: Element Global -> IO (Element Global)
+newBefore elem = Internals.newBefore elem globalOrderRep
+
+{-# NOINLINE globalOrderRep #-}
+globalOrderRep :: OrderRep Global
+globalOrderRep = unsafePerformIO $ newOrderRep defaultRawAlgorithm
