diff --git a/docs/charts.md b/docs/charts.md
index d63df172075588b9d59722245be89a3410ec93be..071eb4980cbae24f297aff51ddc9082e438a4132 100644
--- a/docs/charts.md
+++ b/docs/charts.md
@@ -234,11 +234,11 @@ team.
 In addition to the other fields above, each requirements entry may contain
 the optional field `alias`.
 
-Adding an alias for a dependency chart would add another copy
-of the chart as a new depdendency using alias as name of new dependency.
+Adding an alias for a dependency chart would put
+a chart in dependencies using alias as name of new dependency.
 
-One can use `alias` in cases where they need multiple copies of same chart
-as dependencies all independent of one another.
+One can use `alias` in cases where they need to access a chart
+with other name(s).
 
 ````
 # parentchart/requirements.yaml
@@ -246,16 +246,21 @@ dependencies:
       - name: subchart
         repository: http://localhost:10191
         version: 0.1.0
-        alias:
-          - one-more-subchart
-          - another-subchart
+        alias: new-subchart-1
+      - name: subchart
+        repository: http://localhost:10191
+        version: 0.1.0
+        alias: new-subchart-2
+      - name: subchart
+        repository: http://localhost:10191
+        version: 0.1.0
 ````
 
 In the above example we will get 3 depenendencies in all for `parentchart`
 ```
 subchart
-one-more-subchart
-another-subchart
+new-subchart-1
+new-subchart-2
 ```
 
 Manual way of achieving this is copy/pasting same chart in
diff --git a/pkg/chartutil/requirements.go b/pkg/chartutil/requirements.go
index 3d207cf5f0a196ef729ec00e528a024f9a99e1ca..fbd686b9102ce1f8980b2f8795098f778f5fd3ae 100644
--- a/pkg/chartutil/requirements.go
+++ b/pkg/chartutil/requirements.go
@@ -66,7 +66,7 @@ type Dependency struct {
 	// string or pair of child/parent sublist items.
 	ImportValues []interface{} `json:"import-values"`
 	// Alias usable alias to be used for the chart
-	Alias []string `json:"alias"`
+	Alias string `json:"alias"`
 }
 
 // ErrNoRequirementsFile to detect error condition
@@ -218,7 +218,7 @@ func ProcessRequirementsTags(reqs *Requirements, cvals Values) {
 
 }
 
-func copyChartAsAlias(charts []*chart.Chart, dependentChart, aliasChart string) *chart.Chart {
+func getAliasDependency(charts []*chart.Chart, aliasChart *Dependency) *chart.Chart {
 	var chartFound chart.Chart
 	for _, existingChart := range charts {
 		if existingChart == nil {
@@ -227,13 +227,17 @@ func copyChartAsAlias(charts []*chart.Chart, dependentChart, aliasChart string)
 		if existingChart.Metadata == nil {
 			continue
 		}
-		if existingChart.Metadata.Name != dependentChart {
+		if existingChart.Metadata.Name != aliasChart.Name {
+			continue
+		}
+		if existingChart.Metadata.Version != aliasChart.Version {
 			continue
 		}
-
 		chartFound = *existingChart
 		newMetadata := *existingChart.Metadata
-		newMetadata.Name = aliasChart
+		if aliasChart.Alias != "" {
+			newMetadata.Name = aliasChart.Alias
+		}
 		chartFound.Metadata = &newMetadata
 		return &chartFound
 	}
@@ -253,19 +257,16 @@ func ProcessRequirementsEnabled(c *chart.Chart, v *chart.Config) error {
 		return nil
 	}
 
+	var chartDependencies []*chart.Chart
 	for _, req := range reqs.Dependencies {
-		for _, alias := range req.Alias {
-			aliasDependency := copyChartAsAlias(c.Dependencies, req.Name, alias)
-			if aliasDependency == nil {
-				break
-			}
-			c.Dependencies = append(c.Dependencies, aliasDependency)
-			origReqName := req.Name
-			req.Name = alias
-			reqs.Dependencies = append(reqs.Dependencies, req)
-			req.Name = origReqName
+		if chartDependency := getAliasDependency(c.Dependencies, req); chartDependency != nil {
+			chartDependencies = append(chartDependencies, chartDependency)
+		}
+		if req.Alias != "" {
+			req.Name = req.Alias
 		}
 	}
+	c.Dependencies = chartDependencies
 
 	// set all to true
 	for _, lr := range reqs.Dependencies {
diff --git a/pkg/chartutil/requirements_test.go b/pkg/chartutil/requirements_test.go
index ad5b5c1714fd8f2bd02aef18627e8fa14d5ea8fa..65d59e52f285443bb8311448be54bfdf981ba7f3 100644
--- a/pkg/chartutil/requirements_test.go
+++ b/pkg/chartutil/requirements_test.go
@@ -321,22 +321,36 @@ func verifyRequirementsImportValues(t *testing.T, c *chart.Chart, v *chart.Confi
 	}
 }
 
-func TestCopyChartAsAlias(t *testing.T) {
+func TestGetAliasDependency(t *testing.T) {
 	c, err := Load("testdata/frobnitz")
 	if err != nil {
 		t.Fatalf("Failed to load testdata: %s", err)
 	}
-
-	if aliasChart := copyChartAsAlias(c.Dependencies, "mariners", "another-mariner"); aliasChart != nil {
-		t.Fatalf("expected no chart but got %s", aliasChart.Metadata.Name)
+	req, err := LoadRequirements(c)
+	if err != nil {
+		t.Fatalf("Failed to load requirement for testdata: %s", err)
+	}
+	if len(req.Dependencies) == 0 {
+		t.Fatalf("There are no requirements to test")
 	}
 
-	aliasChart := copyChartAsAlias(c.Dependencies, "mariner", "another-mariner")
+	// Success case
+	aliasChart := getAliasDependency(c.Dependencies, req.Dependencies[0])
 	if aliasChart == nil {
-		t.Fatal("Failed to find dependent chart")
+		t.Fatalf("Failed to get dependency chart for alias %s", req.Dependencies[0].Name)
+	}
+	if req.Dependencies[0].Alias != "" {
+		if aliasChart.Metadata.Name != req.Dependencies[0].Alias {
+			t.Fatalf("Dependency chart name should be %s but got %s", req.Dependencies[0].Alias, aliasChart.Metadata.Name)
+		}
+	} else if aliasChart.Metadata.Name != req.Dependencies[0].Name {
+		t.Fatalf("Dependency chart name should be %s but got %s", req.Dependencies[0].Name, aliasChart.Metadata.Name)
 	}
-	if aliasChart.Metadata.Name != "another-mariner" {
-		t.Fatal(`Failed to update chart-name for alias "dependent chart`)
+
+	// Failure case
+	req.Dependencies[0].Name = "something-else"
+	if aliasChart := getAliasDependency(c.Dependencies, req.Dependencies[0]); aliasChart != nil {
+		t.Fatalf("expected no chart but got %s", aliasChart.Metadata.Name)
 	}
 }
 
@@ -364,15 +378,15 @@ func TestDependentChartAliases(t *testing.T) {
 		t.Fatalf("Cannot load requirements for test chart, %v", err)
 	}
 
-	var expectedDependencyCharts int
-	for _, reqmt := range reqmts.Dependencies {
-		expectedDependencyCharts++
-		if len(reqmt.Alias) >= 0 {
-			expectedDependencyCharts += len(reqmt.Alias)
-		}
-	}
-	if len(c.Dependencies) != expectedDependencyCharts {
-		t.Fatalf("Expected number of chart dependencies %d, but got %d", expectedDependencyCharts, len(c.Dependencies))
+	// var expectedDependencyCharts int
+	// for _, reqmt := range reqmts.Dependencies {
+	// 	expectedDependencyCharts++
+	// 	if len(reqmt.Alias) >= 0 {
+	// 		expectedDependencyCharts += len(reqmt.Alias)
+	// 	}
+	// }
+	if len(c.Dependencies) != len(reqmts.Dependencies) {
+		t.Fatalf("Expected number of chart dependencies %d, but got %d", len(reqmts.Dependencies), len(c.Dependencies))
 	}
 
 }
diff --git a/pkg/chartutil/testdata/dependent-chart-alias/requirements.yaml b/pkg/chartutil/testdata/dependent-chart-alias/requirements.yaml
index 2e41105c7a99cbba061a1b069570050a3c32fb32..aab6cddf7cbfc8165e4f8533ee52124347921bc5 100644
--- a/pkg/chartutil/testdata/dependent-chart-alias/requirements.yaml
+++ b/pkg/chartutil/testdata/dependent-chart-alias/requirements.yaml
@@ -5,6 +5,8 @@ dependencies:
   - name: mariner
     version: "4.3.2"
     repository: https://example.com/charts
-    alias:
-    - mariners1
-    - mariners2
+    alias: mariners2
+  - name: mariner
+    version: "4.3.2"
+    repository: https://example.com/charts
+    alias: mariners1
diff --git a/pkg/resolver/resolver_test.go b/pkg/resolver/resolver_test.go
index 9453a979f483653c149e17e976e0c9664c1bf1e7..b87022b932fa60ee494c4930cce51dd837d08e1b 100644
--- a/pkg/resolver/resolver_test.go
+++ b/pkg/resolver/resolver_test.go
@@ -146,7 +146,7 @@ func TestResolve(t *testing.T) {
 }
 
 func TestHashReq(t *testing.T) {
-	expect := "sha256:917e251ddba291096889f81eb7de713ab4e1afbbb07c576dfd7d66ba9300b12b"
+	expect := "sha256:45b06fcc4496c705bf3d634f8a2ff84e6a6f0bdcaf010614b8886572d1e52b99"
 	req := &chartutil.Requirements{
 		Dependencies: []*chartutil.Dependency{
 			{Name: "alpine", Version: "0.1.0", Repository: "http://localhost:8879/charts"},