diff --git a/README b/README
new file mode 100644
--- /dev/null
+++ b/README
@@ -0,0 +1,45 @@
+editor-open
+===========
+
+You know when you run `git commit`, and an editor pops open so you can enter a
+commit message? This is a Haskell library that does that.
+
+This library isn't very portable. It relies on the `$EDITOR` environment
+variable. The concept only exists on *nix systems.
+
+Installing
+----------
+
+If you're using this library, I assume you're familiar with the basic
+infrastructure of Haskell programs. If not, check out bitemyapp's guide
+to learning Haskell: <https://github.com/bitemyapp/learnhaskell>.
+
+Just add `editor-open` to the `build-depends:` field in your project's `.cabal`
+file.
+
+Alternatively, you can just do a one-off installation with:
+
+    cabal install editor-open
+
+Contact
+-------
+
+* Email: `peter@harpending.org` 
+* IRC: `pharpend` on FreeNode and OFTC
+
+Copyright
+---------
+
+Copyright 2015 Peter Harpending
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may
+not use this file except in compliance with the License.  You may obtain
+a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/README.md b/README.md
deleted file mode 100644
--- a/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# editor-open
-
-You know when you run `git commit`, and an editor pops open so you can enter a
-commit message? This is a Haskell library that does that.
-
-This library isn't very portable. It relies on the `$EDITOR` environment
-variable. The concept only exists on *nix systems.
-
-# Installing
-
-If you're using this library, I assume you're familiar with the basic
-infrastructure of Haskell programs. If not, check out
-[Bitemyapp's guide](https://github.com/bitemyapp/learnhaskell).
-
-Just add `editor-open` to the `build-depends:` field in your project's `.cabal`
-file.
-
-Alternatively, you can just do a one-off installation with:
-
-```
-cabal install editor-open
-```
-
-# Contact
-
-* Email: `peter@harpending.org` 
-* IRC: `pharpend` on FreeNode and OFTC
-
-# Copyright
-
-Copyright 2015 Peter Harpending
-
-Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-this file except in compliance with the License.  You may obtain a copy of the
-License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software distributed
-under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations under the License.
diff --git a/editor-open.cabal b/editor-open.cabal
--- a/editor-open.cabal
+++ b/editor-open.cabal
@@ -1,5 +1,5 @@
 name:                editor-open
-version:             0.3.0.0
+version:             0.4.0.0
 synopsis:            Open the user's $EDITOR for text input.
 description:
   You know when you run @git commit@, and an editor pops open so you can enter a
@@ -18,7 +18,8 @@
 cabal-version:       >=1.10
 bug-reports:         https://github.com/pharpend/editor-open/issues/new
 extra-source-files:  
-  README.md
+  LICENSE
+  README
 data-files:
   res/*.json
   res/*.yaml
@@ -58,6 +59,20 @@
   -- other-modules:       
   -- other-extensions:    
 
+executable editor-open-test_yaml_file_conduit
+  hs-source-dirs:      tests/
+  default-language:    Haskell2010
+  build-depends:
+     base ==4.8.*
+   , bytestring
+   , conduit >=1.2.3 && <1.3
+   , conduit-extra
+   , editor-open
+   , resourcet
+  main-is:             test_yaml_file_conduit.hs
+  -- other-modules:       
+  -- other-extensions:    
+
 source-repository head 
   type: git
   location: https://github.com/pharpend/editor-open.git
@@ -65,4 +80,4 @@
 source-repository this
   type: git
   location: https://github.com/pharpend/editor-open.git
-  tag: 0.3.0.0
+  tag: 0.4.0.0
diff --git a/src/Text/Editor.hs b/src/Text/Editor.hs
--- a/src/Text/Editor.hs
+++ b/src/Text/Editor.hs
@@ -43,37 +43,6 @@
 import           System.Process
 import           System.Posix
 
--- |This is the function you should use.
--- 
--- 'bracketConduit' takes a 'Producer', to produce the contents of the
--- original file, and a 'Consumer' to consume them, and returns the
--- result of the consumer, along with the exit code from the editor.
--- 
--- If you don't know how to use conduits, see the
--- <http://www.stackage.org/package/conduit documentation> for the
--- conduit package.
--- 
--- If you really don't want to use conduits, you can use the strict I/O
--- functions at the bottom of the module. Be warned that those functions
--- are not very performant.
-bracketConduit :: Template
-               -> Producer (ResourceT IO) ByteString
-               -> Consumer ByteString (ResourceT IO) b
-               -> ResourceT IO (ExitCode,b)
-bracketConduit template producer consumer =
-  do userEditor_ <-
-       liftIO (userEditorDefault _default_editor)
-     systemTempDirectory <- liftIO getTemporaryDirectory
-     (filePath,handle) <-
-       liftIO (openBinaryTempFile systemTempDirectory template)
-     connect producer (sinkHandle handle)
-     liftIO (hClose handle)
-     result <-
-       sourceProcessWithConsumer (proc userEditor_ [filePath])
-                                 consumer
-     liftIO (removeFile filePath)
-     return result
-
 -- == File-type extensions ==
 -- 
 -- If you use one of the extensions below, you'll likely enable syntax
diff --git a/tests/test_yaml_file_conduit.hs b/tests/test_yaml_file_conduit.hs
new file mode 100644
--- /dev/null
+++ b/tests/test_yaml_file_conduit.hs
@@ -0,0 +1,50 @@
+-- Copyright 2015 Peter Harpending
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License"); you
+-- may not use this file except in compliance with the License.  You
+-- may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+-- implied.  See the License for the specific language governing
+-- permissions and limitations under the License.
+
+
+-- | 
+-- Module      : Main
+-- Description : Test of editor-open
+-- Copyright   : Copyright 2015 Peter Harpending
+-- License     : Apache-2.0
+-- Maintainer  : Peter Harpending <peter@harpending.org>
+-- Stability   : experimental
+-- Portability : POSIX
+-- 
+
+module Main where
+
+import Control.Monad.Trans.Resource (runResourceT)
+import qualified Data.ByteString.Lazy as B
+import Data.Conduit (connect, toConsumer, toProducer)
+import Data.Conduit.Binary
+       (sinkHandle, sinkLbs, sourceFile, sourceLbs)
+import Paths_editor_open (getDataFileName)
+import System.Exit (ExitCode(..))
+import System.IO (stdout)
+import Text.Editor (bracketConduit, plainTemplate)
+
+main :: IO ()
+main =
+  do schemaFP <-
+       getDataFileName "res/bug-schema.yaml"
+     (exitCode,result) <-
+       runResourceT
+         (bracketConduit plainTemplate
+                         (toProducer (sourceFile schemaFP))
+                         (toConsumer sinkLbs))
+     case exitCode of
+       ExitSuccess -> connect (sourceLbs result) (sinkHandle stdout)
+       ExitFailure i ->
+         fail (mappend "Editor process failed with exit code " (show i))
