diff --git a/pkg/releaseutil/manifest.go b/pkg/releaseutil/manifest.go
index aad1641d715245a0f235f6da0241be0ec7fc5777..a0449cc551c9e95d20b3431061ab1463e732342b 100644
--- a/pkg/releaseutil/manifest.go
+++ b/pkg/releaseutil/manifest.go
@@ -19,6 +19,7 @@ package releaseutil
 import (
 	"fmt"
 	"regexp"
+	"strings"
 )
 
 // SimpleHead defines what the structure of the head of a manifest file
@@ -34,16 +35,25 @@ type SimpleHead struct {
 var sep = regexp.MustCompile("(?:^|\\s*\n)---\\s*")
 
 // SplitManifests takes a string of manifest and returns a map contains individual manifests
-func SplitManifests(bigfile string) map[string]string {
+func SplitManifests(bigFile string) map[string]string {
 	// Basically, we're quickly splitting a stream of YAML documents into an
 	// array of YAML docs. In the current implementation, the file name is just
 	// a place holder, and doesn't have any further meaning.
 	tpl := "manifest-%d"
 	res := map[string]string{}
 	// Making sure that any extra whitespace in YAML stream doesn't interfere in splitting documents correctly.
-	docs := sep.Split(bigfile, -1)
-	for i, d := range docs {
-		res[fmt.Sprintf(tpl, i)] = d
+	bigFileTmp := strings.TrimSpace(bigFile)
+	docs := sep.Split(bigFileTmp, -1)
+	var count int
+	for _, d := range docs {
+
+		if d == "" {
+			continue
+		}
+
+		d = strings.TrimSpace(d)
+		res[fmt.Sprintf(tpl, count)] = d
+		count = count + 1
 	}
 	return res
 }
diff --git a/pkg/releaseutil/manifest_test.go b/pkg/releaseutil/manifest_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..7906279adf76fbff698c33628e0833337a2eea0f
--- /dev/null
+++ b/pkg/releaseutil/manifest_test.go
@@ -0,0 +1,61 @@
+/*
+Copyright 2016 The Kubernetes Authors All rights reserved.
+
+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.
+*/
+
+package releaseutil // import "k8s.io/helm/pkg/releaseutil"
+
+import (
+	"reflect"
+	"testing"
+)
+
+const manifestFile = `
+
+---
+apiVersion: v1
+kind: Pod
+metadata:
+  name: finding-nemo,
+  annotations:
+    "helm.sh/hook": test-success
+spec:
+  containers:
+  - name: nemo-test
+    image: fake-image
+    cmd: fake-command
+`
+
+const expectedManifest = `apiVersion: v1
+kind: Pod
+metadata:
+  name: finding-nemo,
+  annotations:
+    "helm.sh/hook": test-success
+spec:
+  containers:
+  - name: nemo-test
+    image: fake-image
+    cmd: fake-command`
+
+func TestSplitManifest(t *testing.T) {
+	manifests := SplitManifests(manifestFile)
+	if len(manifests) != 1 {
+		t.Errorf("Expected 1 manifest, got %v", len(manifests))
+	}
+	expected := map[string]string{"manifest-0": expectedManifest}
+	if !reflect.DeepEqual(manifests, expected) {
+		t.Errorf("Expected %v, got %v", expected, manifests)
+	}
+}