diff --git a/eternal.cabal b/eternal.cabal
--- a/eternal.cabal
+++ b/eternal.cabal
@@ -1,6 +1,6 @@
 name:       eternal
 category:   Control
-version:    0.0.7
+version:    0.0.8
 author:        Heather Cynede
 maintainer:    Heather Cynede <Cynede@Gentoo.org>
 license: BSD3
@@ -20,6 +20,7 @@
     Control.Eternal
     
     Control.Eternal.Syntax
+    Control.Eternal.String
     Control.Eternal.System
     Control.Eternal.Algorithms
     
diff --git a/src/Control/Eternal.hs b/src/Control/Eternal.hs
--- a/src/Control/Eternal.hs
+++ b/src/Control/Eternal.hs
@@ -1,9 +1,11 @@
 module Control.Eternal
   ( module Control.Eternal.Syntax
+  , module Control.Eternal.String
   , module Control.Eternal.System
   , module Control.Eternal.Algorithms
   ) where
 
 import Control.Eternal.Syntax
+import Control.Eternal.String
 import Control.Eternal.System
 import Control.Eternal.Algorithms
diff --git a/src/Control/Eternal/String.hs b/src/Control/Eternal/String.hs
new file mode 100644
--- /dev/null
+++ b/src/Control/Eternal/String.hs
@@ -0,0 +1,15 @@
+module Control.Eternal.String
+  ( trim
+  ) where
+
+import Data.Char (isSpace)
+
+trim :: String -> String
+trim xs = dropSpaceTail "" $ dropWhile isSpace xs
+
+dropSpaceTail :: String -> String -> String
+dropSpaceTail maybeStuff "" = ""
+dropSpaceTail maybeStuff (x:xs)
+        | isSpace x = dropSpaceTail (x:maybeStuff) xs
+        | null maybeStuff = x : dropSpaceTail "" xs
+        | otherwise       = reverse maybeStuff ++ x : dropSpaceTail "" xs
