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.1.1.0
+version:             0.2.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
@@ -19,6 +19,9 @@
 bug-reports:         https://notabug.org/pharpend/editor-open/issues/new
 extra-source-files:  
   README.md
+data-files:
+  res/*.json
+  res/*.yaml
 
 library
   -- other-modules:       
@@ -38,6 +41,17 @@
   exposed-modules:     
     Text.Editor
 
+executable editor-open-test_yaml_file
+  hs-source-dirs:      tests/
+  default-language:    Haskell2010
+  build-depends:
+     base ==4.8.*
+   , bytestring
+   , editor-open
+  main-is:             test_yaml_file.hs
+  -- other-modules:       
+  -- other-extensions:    
+
 source-repository head 
   type: git
   location: https://notabug.org/pharpend/editor-open.git
@@ -45,4 +59,4 @@
 source-repository this
   type: git
   location: https://notabug.org/pharpend/editor-open.git
-  tag: 0.1.1.0
+  tag: 0.2.0.0
diff --git a/res/bug-schema.json b/res/bug-schema.json
new file mode 100644
--- /dev/null
+++ b/res/bug-schema.json
@@ -0,0 +1,43 @@
+{
+  "name": "bug",
+  "type": "object",
+  "properties": {
+    "bug-creation-date": {
+      "required": true,
+      "type": "string",
+      "description": "The ISO 8601 date at which the bug was created."
+    },
+    "bug-comments": {
+      "items": {
+        "type": "object"
+      },
+      "type": "array",
+      "description": "Comments on the bug. Each item should fit the comment schema."
+    },
+    "bug-id": {
+      "required": true,
+      "type": "string",
+      "description": "Unique identifier for this bug. Should be a whirlpool hash of the title concat the time at which it was created."
+    },
+    "bug-description": {
+      "required": false,
+      "type": "string",
+      "description": "An optional description of the bug."
+    },
+    "bug-open": {
+      "required": true,
+      "type": "boolean",
+      "description": "Whether or not the bug is open"
+    },
+    "bug-reporter": {
+      "required": false,
+      "type": "object",
+      "description": "The person who reported the bug. Object should fit the person schema."
+    },
+    "bug-title": {
+      "required": true,
+      "type": "string",
+      "description": "The title of the bug."
+    }
+  }
+}
diff --git a/res/bug-schema.yaml b/res/bug-schema.yaml
new file mode 100644
--- /dev/null
+++ b/res/bug-schema.yaml
@@ -0,0 +1,33 @@
+name: bug
+type: object
+properties:
+  bug-creation-date:
+    required: true
+    type: string
+    description: The ISO 8601 date at which the bug was created.
+  bug-comments:
+    items:
+      type: object
+    type: array
+    description: Comments on the bug. Each item should fit the comment schema.
+  bug-id:
+    required: true
+    type: string
+    description: Unique identifier for this bug. Should be a whirlpool hash of the
+      title concat the time at which it was created.
+  bug-description:
+    required: false
+    type: string
+    description: An optional description of the bug.
+  bug-open:
+    required: true
+    type: boolean
+    description: Whether or not the bug is open
+  bug-reporter:
+    required: false
+    type: object
+    description: The person who reported the bug. Object should fit the person schema.
+  bug-title:
+    required: true
+    type: string
+    description: The title of the bug.
diff --git a/src/Text/Editor.hs b/src/Text/Editor.hs
--- a/src/Text/Editor.hs
+++ b/src/Text/Editor.hs
@@ -29,6 +29,7 @@
 
 import qualified Data.ByteString as B
 import           Data.ByteString (ByteString)
+import           Data.ByteString.Char8 (unpack)
 import           Data.Monoid
 import           System.IO
 import           System.IO.Temp
@@ -37,6 +38,15 @@
 
 -- == Porcelain functions =
 
+-- |If you don't want to use ByteString, use this function.
+-- 
+-- >>> :t runUserEditorDWIM plainTemplate mempty
+-- ByteString
+-- >>> :t wrapStr <$> runUserEditorDWIM plainTemplate mempty
+-- String
+wrapStr :: ByteString -> String
+wrapStr = unpack
+
 -- |This is most likely the function you want to use. It takes a file
 -- type template as an argument, along with what you want displayed
 -- when the user opens the editor. It then runs the editor, and
@@ -209,9 +219,9 @@
     hSetBinaryMode hdl True
     hSetBuffering hdl NoBuffering
     B.hPut hdl initialContents
-    callProcess editorName [filePath]
-    B.hGetContents hdl
-
+    hClose hdl
+    waitForProcess =<< spawnProcess editorName [filePath]
+    B.readFile filePath
 
 -- |This uses 'getEnv' from "System.Posix" to attempt to
 -- get the user's @$EDITOR@ variable.
diff --git a/tests/test_yaml_file.hs b/tests/test_yaml_file.hs
new file mode 100644
--- /dev/null
+++ b/tests/test_yaml_file.hs
@@ -0,0 +1,37 @@
+-- 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 qualified Data.ByteString as B
+import           Paths_editor_open
+import           System.IO
+import           Text.Editor
+
+main :: IO ()
+main =
+  getDataFileName "res/bug-schema.yaml" >>=
+  runUserEditorDWIMFile yamlTemplate >>=
+  B.hPut stdout
