diff --git a/Data/FilePath.hs b/Data/FilePath.hs
--- a/Data/FilePath.hs
+++ b/Data/FilePath.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE CPP, GADTs, DataKinds, KindSignatures, StandaloneDeriving, RankNTypes, DeriveDataTypeable, FlexibleInstances, MagicHash #-}
-module Data.FilePath (Path, From, FilePath(..), rootPath, relativePath, (</>), mkDirPath, mkFilePath, mkFullFilePath, showp, dirpathQ, filepathQ) where
+module Data.FilePath (Path(..), From(..), FilePath, rootPath, relativePath, (</>), mkDirPath, mkFilePath, mkRootFilePathBase, mkFullFilePath, showp, dirpathQ, filepathQ) where
 
 import Prelude hiding (FilePath)
 import Data.Data
@@ -37,6 +37,16 @@
 
 mkFilePath :: String -> Maybe (FilePath Relative File)
 mkFilePath s = FilePath RelativePath `fmap` (mkf s)
+
+mkRootFilePathBase :: String -> Maybe (FilePath Root Directory)
+mkRootFilePathBase ('/':s) = do
+  ys <- xs
+  return $ foldl (</>) (RootPath) ys
+  where
+    ss = splitOn "/" s
+    xs = sequence $ map mkDirPath $ filter (not . null) ss
+mkRootFilePathBase _ = Nothing -- all full file paths must start from /
+
 
 mkFullFilePath :: String -> Maybe (FilePath Root File)
 mkFullFilePath ('/':s) = do
diff --git a/data-filepath.cabal b/data-filepath.cabal
--- a/data-filepath.cabal
+++ b/data-filepath.cabal
@@ -1,5 +1,5 @@
 name:                data-filepath
-version:             1.0.0.0
+version:             2.0.0.0
 synopsis:            A type safe file path data structure
 -- description:         
 license:             BSD3
