refine BasePathFs implementation
diff --git a/basepath.go b/basepath.go
index e3dcf97..083199f 100644
--- a/basepath.go
+++ b/basepath.go
@@ -20,16 +20,13 @@
 	path   string
 }
 
-// NewBasePathFs applies filepath.Clean on creation
-func NewBasePathFs(source Fs, path string) *BasePathFs {
-	return &BasePathFs{source: source, path: filepath.Clean(path) + string(os.PathSeparator)}
-}
-
 // on a file outside the base path it returns the given file name and an error,
 // else the given file with the base path prepended
 func (b *BasePathFs) RealPath(name string) (path string, err error) {
-	path = filepath.Clean(filepath.Join(b.path, name))
-	if !strings.HasPrefix(path, b.path) {
+	bpath := filepath.Clean(b.path) + string(os.PathSeparator)
+
+	path = filepath.Clean(filepath.Join(bpath, name))
+	if !strings.HasPrefix(path, bpath) {
 		return name, os.ErrNotExist
 	}
 	return path, nil
diff --git a/basepath_test.go b/basepath_test.go
index ee9f2d3..0db6783 100644
--- a/basepath_test.go
+++ b/basepath_test.go
@@ -7,7 +7,7 @@
 func TestBasePath(t *testing.T) {
 	baseFs := &MemMapFs{}
 	baseFs.MkdirAll("/base/path/tmp", 0777)
-	bp := NewBasePathFs(baseFs, "/base/path")
+	bp := &BasePathFs{source: baseFs, path: "/base/path"}
 
 	if _, err := bp.Create("/tmp/foo"); err != nil {
 		t.Errorf("Failed to set real path")