diff --git a/cmd/helm/create.go b/cmd/helm/create.go
index 27d1c6cf35ccf4b782fb900c216d11ebf0f37757..d56f118bc67d6a4bc04c45c2fc86db6b169de35e 100644
--- a/cmd/helm/create.go
+++ b/cmd/helm/create.go
@@ -91,7 +91,7 @@ func (c *createCmd) run() error {
 		Description: "A Helm chart for Kubernetes",
 		Version:     "0.1.0",
 		AppVersion:  "1.0",
-		ApiVersion:  chartutil.ApiVersionV1,
+		APIVersion:  chartutil.APIVersionv1,
 	}
 
 	if c.starter != "" {
diff --git a/cmd/helm/create_test.go b/cmd/helm/create_test.go
index 06e793411be5c2bc6138014e1c0e20a69e3fba52..380b6d8cb00ad70754e202ed8859972d815aad16 100644
--- a/cmd/helm/create_test.go
+++ b/cmd/helm/create_test.go
@@ -67,8 +67,8 @@ func TestCreateCmd(t *testing.T) {
 	if c.Metadata.Name != cname {
 		t.Errorf("Expected %q name, got %q", cname, c.Metadata.Name)
 	}
-	if c.Metadata.ApiVersion != chartutil.ApiVersionV1 {
-		t.Errorf("Wrong API version: %q", c.Metadata.ApiVersion)
+	if c.Metadata.APIVersion != chartutil.APIVersionv1 {
+		t.Errorf("Wrong API version: %q", c.Metadata.APIVersion)
 	}
 }
 
@@ -139,8 +139,8 @@ func TestCreateStarterCmd(t *testing.T) {
 	if c.Metadata.Name != cname {
 		t.Errorf("Expected %q name, got %q", cname, c.Metadata.Name)
 	}
-	if c.Metadata.ApiVersion != chartutil.ApiVersionV1 {
-		t.Errorf("Wrong API version: %q", c.Metadata.ApiVersion)
+	if c.Metadata.APIVersion != chartutil.APIVersionv1 {
+		t.Errorf("Wrong API version: %q", c.Metadata.APIVersion)
 	}
 
 	if l := len(c.Templates); l != 6 {
diff --git a/cmd/helm/get.go b/cmd/helm/get.go
index 9c69e26825c383a3f64aefdbd684ec6b9787a6c3..35ee7dbffcca27b0010728017b8c08f2d7f6fe40 100644
--- a/cmd/helm/get.go
+++ b/cmd/helm/get.go
@@ -44,7 +44,7 @@ type getCmd struct {
 	release string
 	out     io.Writer
 	client  helm.Interface
-	version int32
+	version int
 }
 
 func newGetCmd(client helm.Interface, out io.Writer) *cobra.Command {
@@ -69,7 +69,7 @@ func newGetCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		},
 	}
 
-	cmd.Flags().Int32Var(&get.version, "revision", 0, "get the named release with revision")
+	cmd.Flags().IntVar(&get.version, "revision", 0, "get the named release with revision")
 
 	cmd.AddCommand(newGetValuesCmd(nil, out))
 	cmd.AddCommand(newGetManifestCmd(nil, out))
diff --git a/cmd/helm/get_hooks.go b/cmd/helm/get_hooks.go
index 55ecd0e2a22a1d0197c98207dfc927bf3ebd06e2..c245589a6e21dd480063e49a11672591d06a5e16 100644
--- a/cmd/helm/get_hooks.go
+++ b/cmd/helm/get_hooks.go
@@ -35,7 +35,7 @@ type getHooksCmd struct {
 	release string
 	out     io.Writer
 	client  helm.Interface
-	version int32
+	version int
 }
 
 func newGetHooksCmd(client helm.Interface, out io.Writer) *cobra.Command {
@@ -56,7 +56,7 @@ func newGetHooksCmd(client helm.Interface, out io.Writer) *cobra.Command {
 			return ghc.run()
 		},
 	}
-	cmd.Flags().Int32Var(&ghc.version, "revision", 0, "get the named release with revision")
+	cmd.Flags().IntVar(&ghc.version, "revision", 0, "get the named release with revision")
 	return cmd
 }
 
diff --git a/cmd/helm/get_manifest.go b/cmd/helm/get_manifest.go
index b7f764eefdfb3058bb31fe35ba70b9c71c3dd313..59e92417e30e573fc2feee64b8aba6e9758afe40 100644
--- a/cmd/helm/get_manifest.go
+++ b/cmd/helm/get_manifest.go
@@ -37,7 +37,7 @@ type getManifestCmd struct {
 	release string
 	out     io.Writer
 	client  helm.Interface
-	version int32
+	version int
 }
 
 func newGetManifestCmd(client helm.Interface, out io.Writer) *cobra.Command {
@@ -59,7 +59,7 @@ func newGetManifestCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		},
 	}
 
-	cmd.Flags().Int32Var(&get.version, "revision", 0, "get the named release with revision")
+	cmd.Flags().IntVar(&get.version, "revision", 0, "get the named release with revision")
 	return cmd
 }
 
diff --git a/cmd/helm/get_values.go b/cmd/helm/get_values.go
index 532ad75ff2e46975a062c27da2bfba09754cf307..8282fbf2b76e2f1cbbe22078afac554c2035e63c 100644
--- a/cmd/helm/get_values.go
+++ b/cmd/helm/get_values.go
@@ -35,7 +35,7 @@ type getValuesCmd struct {
 	allValues bool
 	out       io.Writer
 	client    helm.Interface
-	version   int32
+	version   int
 }
 
 func newGetValuesCmd(client helm.Interface, out io.Writer) *cobra.Command {
@@ -57,7 +57,7 @@ func newGetValuesCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		},
 	}
 
-	cmd.Flags().Int32Var(&get.version, "revision", 0, "get the named release with revision")
+	cmd.Flags().IntVar(&get.version, "revision", 0, "get the named release with revision")
 	cmd.Flags().BoolVarP(&get.allValues, "all", "a", false, "dump all (computed) values")
 	return cmd
 }
diff --git a/cmd/helm/helm_test.go b/cmd/helm/helm_test.go
index d72273e662d83501cb648a18e44d19adcd540b95..40f011591baf687d17d339c3304dc631a9b7bc80 100644
--- a/cmd/helm/helm_test.go
+++ b/cmd/helm/helm_test.go
@@ -73,7 +73,7 @@ type releaseCase struct {
 	resp     *release.Release
 	// Rels are the available releases at the start of the test.
 	rels      []*release.Release
-	responses map[string]release.TestRun_Status
+	responses map[string]release.TestRunStatus
 }
 
 // tempHelmHome sets up a Helm Home in a temp dir.
diff --git a/cmd/helm/history.go b/cmd/helm/history.go
index c51cd7ec3c08c744ab3d962a7b0d5b14918250c5..ab5810a678c44e84985d8c7e6f93c63da060ab58 100644
--- a/cmd/helm/history.go
+++ b/cmd/helm/history.go
@@ -31,7 +31,7 @@ import (
 )
 
 type releaseInfo struct {
-	Revision    int32  `json:"revision"`
+	Revision    int    `json:"revision"`
 	Updated     string `json:"updated"`
 	Status      string `json:"status"`
 	Chart       string `json:"chart"`
@@ -57,7 +57,7 @@ The historical release set is printed as a formatted table, e.g:
 `
 
 type historyCmd struct {
-	max          int32
+	max          int
 	rls          string
 	out          io.Writer
 	helmc        helm.Interface
@@ -86,7 +86,7 @@ func newHistoryCmd(c helm.Interface, w io.Writer) *cobra.Command {
 	}
 
 	f := cmd.Flags()
-	f.Int32Var(&his.max, "max", 256, "maximum number of revision to include in history")
+	f.IntVar(&his.max, "max", 256, "maximum number of revision to include in history")
 	f.UintVar(&his.colWidth, "col-width", 60, "specifies the max column width of output")
 	f.StringVarP(&his.outputFormat, "output", "o", "table", "prints the output in the specified format (json|table|yaml)")
 
diff --git a/cmd/helm/history_test.go b/cmd/helm/history_test.go
index 88a49d29bb7db326053410c432a3eccb7df62961..b2026b4766eb6f637b45b57b50f85f8dd7c72389 100644
--- a/cmd/helm/history_test.go
+++ b/cmd/helm/history_test.go
@@ -27,7 +27,7 @@ import (
 )
 
 func TestHistoryCmd(t *testing.T) {
-	mk := func(name string, vers int32, code rpb.Status_Code) *rpb.Release {
+	mk := func(name string, vers int, code rpb.StatusCode) *rpb.Release {
 		return helm.ReleaseMock(&helm.MockReleaseOptions{
 			Name:       name,
 			Version:    vers,
diff --git a/cmd/helm/list.go b/cmd/helm/list.go
index 0e0d49c359aac187744335b0473d756dfd6e5574..7cc42eec4c56e929634620225d63b8aad515cca7 100644
--- a/cmd/helm/list.go
+++ b/cmd/helm/list.go
@@ -136,8 +136,8 @@ func (l *listCmd) run() error {
 		helm.ReleaseListLimit(l.limit),
 		helm.ReleaseListOffset(l.offset),
 		helm.ReleaseListFilter(l.filter),
-		helm.ReleaseListSort(int32(sortBy)),
-		helm.ReleaseListOrder(int32(sortOrder)),
+		helm.ReleaseListSort(int(sortBy)),
+		helm.ReleaseListOrder(int(sortOrder)),
 		helm.ReleaseListStatuses(stats),
 		helm.ReleaseListNamespace(l.namespace),
 	)
@@ -164,7 +164,7 @@ func (l *listCmd) run() error {
 
 // filterList returns a list scrubbed of old releases.
 func filterList(rels []*release.Release) []*release.Release {
-	idx := map[string]int32{}
+	idx := map[string]int{}
 
 	for _, r := range rels {
 		name, version := r.Name, r.Version
@@ -187,9 +187,9 @@ func filterList(rels []*release.Release) []*release.Release {
 }
 
 // statusCodes gets the list of status codes that are to be included in the results.
-func (l *listCmd) statusCodes() []release.Status_Code {
+func (l *listCmd) statusCodes() []release.StatusCode {
 	if l.all {
-		return []release.Status_Code{
+		return []release.StatusCode{
 			release.Status_UNKNOWN,
 			release.Status_DEPLOYED,
 			release.Status_DELETED,
@@ -200,7 +200,7 @@ func (l *listCmd) statusCodes() []release.Status_Code {
 			release.Status_PENDING_ROLLBACK,
 		}
 	}
-	status := []release.Status_Code{}
+	status := []release.StatusCode{}
 	if l.deployed {
 		status = append(status, release.Status_DEPLOYED)
 	}
diff --git a/cmd/helm/release_testing_test.go b/cmd/helm/release_testing_test.go
index 3246b94c9d8a386efe582142d13cbf76e48fc729..6b36c4ee0db157103acebc04e6c0320fb9579329 100644
--- a/cmd/helm/release_testing_test.go
+++ b/cmd/helm/release_testing_test.go
@@ -32,42 +32,42 @@ func TestReleaseTesting(t *testing.T) {
 			name:      "basic test",
 			args:      []string{"example-release"},
 			flags:     []string{},
-			responses: map[string]release.TestRun_Status{"PASSED: green lights everywhere": release.TestRun_SUCCESS},
+			responses: map[string]release.TestRunStatus{"PASSED: green lights everywhere": release.TestRun_SUCCESS},
 			err:       false,
 		},
 		{
 			name:      "test failure",
 			args:      []string{"example-fail"},
 			flags:     []string{},
-			responses: map[string]release.TestRun_Status{"FAILURE: red lights everywhere": release.TestRun_FAILURE},
+			responses: map[string]release.TestRunStatus{"FAILURE: red lights everywhere": release.TestRun_FAILURE},
 			err:       true,
 		},
 		{
 			name:      "test unknown",
 			args:      []string{"example-unknown"},
 			flags:     []string{},
-			responses: map[string]release.TestRun_Status{"UNKNOWN: yellow lights everywhere": release.TestRun_UNKNOWN},
+			responses: map[string]release.TestRunStatus{"UNKNOWN: yellow lights everywhere": release.TestRun_UNKNOWN},
 			err:       false,
 		},
 		{
 			name:      "test error",
 			args:      []string{"example-error"},
 			flags:     []string{},
-			responses: map[string]release.TestRun_Status{"ERROR: yellow lights everywhere": release.TestRun_FAILURE},
+			responses: map[string]release.TestRunStatus{"ERROR: yellow lights everywhere": release.TestRun_FAILURE},
 			err:       true,
 		},
 		{
 			name:      "test running",
 			args:      []string{"example-running"},
 			flags:     []string{},
-			responses: map[string]release.TestRun_Status{"RUNNING: things are happpeningggg": release.TestRun_RUNNING},
+			responses: map[string]release.TestRunStatus{"RUNNING: things are happpeningggg": release.TestRun_RUNNING},
 			err:       false,
 		},
 		{
 			name:  "multiple tests example",
 			args:  []string{"example-suite"},
 			flags: []string{},
-			responses: map[string]release.TestRun_Status{
+			responses: map[string]release.TestRunStatus{
 				"RUNNING: things are happpeningggg":           release.TestRun_RUNNING,
 				"PASSED: party time":                          release.TestRun_SUCCESS,
 				"RUNNING: things are happening again":         release.TestRun_RUNNING,
diff --git a/cmd/helm/rollback.go b/cmd/helm/rollback.go
index 4892f808dbd4a597db6fc45aac6b4375040e2120..2db26be53394125b12b0d2de31f2ec6c5da2bc60 100644
--- a/cmd/helm/rollback.go
+++ b/cmd/helm/rollback.go
@@ -36,7 +36,7 @@ second is a revision (version) number. To see revision numbers, run
 
 type rollbackCmd struct {
 	name         string
-	revision     int32
+	revision     int
 	dryRun       bool
 	recreate     bool
 	force        bool
@@ -69,7 +69,7 @@ func newRollbackCmd(c helm.Interface, out io.Writer) *cobra.Command {
 				return fmt.Errorf("invalid revision number '%q': %s", args[1], err)
 			}
 
-			rollback.revision = int32(v64)
+			rollback.revision = int(v64)
 			rollback.client = ensureHelmClient(rollback.client)
 			return rollback.run()
 		},
diff --git a/cmd/helm/status.go b/cmd/helm/status.go
index ebabff8dd7a953b1c952ed54c8dc9ff5912c435a..83211eee0e887122935117534736bca192852bbd 100644
--- a/cmd/helm/status.go
+++ b/cmd/helm/status.go
@@ -48,7 +48,7 @@ type statusCmd struct {
 	release string
 	out     io.Writer
 	client  helm.Interface
-	version int32
+	version int
 	outfmt  string
 }
 
@@ -74,7 +74,7 @@ func newStatusCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		},
 	}
 
-	cmd.PersistentFlags().Int32Var(&status.version, "revision", 0, "if set, display the status of the named release with revision")
+	cmd.PersistentFlags().IntVar(&status.version, "revision", 0, "if set, display the status of the named release with revision")
 	cmd.PersistentFlags().StringVarP(&status.outfmt, "output", "o", "", "output the status in the specified format (json or yaml)")
 
 	return cmd
@@ -116,7 +116,7 @@ func PrintStatus(out io.Writer, res *hapi.GetReleaseStatusResponse) {
 		fmt.Fprintf(out, "LAST DEPLOYED: %s\n", res.Info.LastDeployed)
 	}
 	fmt.Fprintf(out, "NAMESPACE: %s\n", res.Namespace)
-	fmt.Fprintf(out, "STATUS: %s\n", res.Info.Status.Code)
+	fmt.Fprintf(out, "STATUS: %s\n", res.Info.Status.Code.String())
 	fmt.Fprintf(out, "\n")
 	if len(res.Info.Status.Resources) > 0 {
 		re := regexp.MustCompile("  +")
diff --git a/pkg/chartutil/chartfile.go b/pkg/chartutil/chartfile.go
index d927e5e546589c23a820d96ef502a5ed8d19876b..8632a2b3414a526b55a8e5d04d8fd7eae47a3daf 100644
--- a/pkg/chartutil/chartfile.go
+++ b/pkg/chartutil/chartfile.go
@@ -28,10 +28,8 @@ import (
 	"k8s.io/helm/pkg/hapi/chart"
 )
 
-// ApiVersionV1 is the API version number for version 1.
-//
-// This is ApiVersionV1 instead of APIVersionV1 to match the protobuf-generated name.
-const ApiVersionV1 = "v1" // nolint
+// APIVersionv1 is the API version number for version 1.
+const APIVersionv1 = "v1" // nolint
 
 // UnmarshalChartfile takes raw Chart.yaml data and unmarshals it.
 func UnmarshalChartfile(data []byte) (*chart.Metadata, error) {
diff --git a/pkg/chartutil/chartfile_test.go b/pkg/chartutil/chartfile_test.go
index f6432481359d196c20cab9aceccf5c0de86f9e6b..49de60f6542d229af7bf56e90747df3d2c21dc41 100644
--- a/pkg/chartutil/chartfile_test.go
+++ b/pkg/chartutil/chartfile_test.go
@@ -40,8 +40,8 @@ func verifyChartfile(t *testing.T, f *chart.Metadata, name string) {
 	}
 
 	// Api instead of API because it was generated via protobuf.
-	if f.ApiVersion != ApiVersionV1 {
-		t.Errorf("Expected API Version %q, got %q", ApiVersionV1, f.ApiVersion)
+	if f.APIVersion != APIVersionv1 {
+		t.Errorf("Expected API Version %q, got %q", APIVersionv1, f.APIVersion)
 	}
 
 	if f.Name != name {
diff --git a/pkg/hapi/chart/metadata.go b/pkg/hapi/chart/metadata.go
index ee9b8d0d6bafe5b18f11be3917b7c53845db6360..1a9dedde63986963700adf19d34a4a70c43bbb61 100644
--- a/pkg/hapi/chart/metadata.go
+++ b/pkg/hapi/chart/metadata.go
@@ -1,25 +1,5 @@
 package chart
 
-type Metadata_Engine int32
-
-const (
-	Metadata_UNKNOWN Metadata_Engine = 0
-	Metadata_GOTPL   Metadata_Engine = 1
-)
-
-var Metadata_Engine_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "GOTPL",
-}
-var Metadata_Engine_value = map[string]int32{
-	"UNKNOWN": 0,
-	"GOTPL":   1,
-}
-
-func (x Metadata_Engine) String() string {
-	return Metadata_Engine_name[int32(x)]
-}
-
 // Maintainer describes a Chart maintainer.
 type Maintainer struct {
 	// Name is a user name or organization name
@@ -53,7 +33,7 @@ type Metadata struct {
 	// The URL to an icon file.
 	Icon string `json:"icon,omitempty"`
 	// The API Version of this chart.
-	ApiVersion string `json:"apiVersion,omitempty"`
+	APIVersion string `json:"apiVersion,omitempty"`
 	// The condition to check to enable chart
 	Condition string `json:"condition,omitempty"`
 	// The tags to check to enable chart
diff --git a/pkg/hapi/release/hook.go b/pkg/hapi/release/hook.go
index 546973fdba1dbf5132f8fd2c15861bcae2a53e12..98a673e20dc693e56badba5f649751ec32a70558 100644
--- a/pkg/hapi/release/hook.go
+++ b/pkg/hapi/release/hook.go
@@ -2,72 +2,54 @@ package release
 
 import "time"
 
-type Hook_Event int32
+type HookEvent int
 
 const (
-	Hook_UNKNOWN              Hook_Event = 0
-	Hook_PRE_INSTALL          Hook_Event = 1
-	Hook_POST_INSTALL         Hook_Event = 2
-	Hook_PRE_DELETE           Hook_Event = 3
-	Hook_POST_DELETE          Hook_Event = 4
-	Hook_PRE_UPGRADE          Hook_Event = 5
-	Hook_POST_UPGRADE         Hook_Event = 6
-	Hook_PRE_ROLLBACK         Hook_Event = 7
-	Hook_POST_ROLLBACK        Hook_Event = 8
-	Hook_RELEASE_TEST_SUCCESS Hook_Event = 9
-	Hook_RELEASE_TEST_FAILURE Hook_Event = 10
+	Hook_UNKNOWN HookEvent = iota
+	Hook_PRE_INSTALL
+	Hook_POST_INSTALL
+	Hook_PRE_DELETE
+	Hook_POST_DELETE
+	Hook_PRE_UPGRADE
+	Hook_POST_UPGRADE
+	Hook_PRE_ROLLBACK
+	Hook_POST_ROLLBACK
+	Hook_RELEASE_TEST_SUCCESS
+	Hook_RELEASE_TEST_FAILURE
 )
 
-var Hook_Event_name = map[int32]string{
-	0:  "UNKNOWN",
-	1:  "PRE_INSTALL",
-	2:  "POST_INSTALL",
-	3:  "PRE_DELETE",
-	4:  "POST_DELETE",
-	5:  "PRE_UPGRADE",
-	6:  "POST_UPGRADE",
-	7:  "PRE_ROLLBACK",
-	8:  "POST_ROLLBACK",
-	9:  "RELEASE_TEST_SUCCESS",
-	10: "RELEASE_TEST_FAILURE",
-}
-var Hook_Event_value = map[string]int32{
-	"UNKNOWN":              0,
-	"PRE_INSTALL":          1,
-	"POST_INSTALL":         2,
-	"PRE_DELETE":           3,
-	"POST_DELETE":          4,
-	"PRE_UPGRADE":          5,
-	"POST_UPGRADE":         6,
-	"PRE_ROLLBACK":         7,
-	"POST_ROLLBACK":        8,
-	"RELEASE_TEST_SUCCESS": 9,
-	"RELEASE_TEST_FAILURE": 10,
+var eventNames = [...]string{
+	"UNKNOWN",
+	"PRE_INSTALL",
+	"POST_INSTALL",
+	"PRE_DELETE",
+	"POST_DELETE",
+	"PRE_UPGRADE",
+	"POST_UPGRADE",
+	"PRE_ROLLBACK",
+	"POST_ROLLBACK",
+	"RELEASE_TEST_SUCCESS",
+	"RELEASE_TEST_FAILURE",
 }
 
-func (x Hook_Event) String() string {
-	return Hook_Event_name[int32(x)]
-}
+func (x HookEvent) String() string { return eventNames[x] }
 
-type Hook_DeletePolicy int32
+type HookDeletePolicy int
 
 const (
-	Hook_SUCCEEDED            Hook_DeletePolicy = 0
-	Hook_FAILED               Hook_DeletePolicy = 1
-	Hook_BEFORE_HOOK_CREATION Hook_DeletePolicy = 2
+	Hook_SUCCEEDED HookDeletePolicy = iota
+	Hook_FAILED
+	Hook_BEFORE_HOOK_CREATION
 )
 
-var Hook_DeletePolicy_name = map[int32]string{
-	0: "SUCCEEDED",
-	1: "FAILED",
-	2: "BEFORE_HOOK_CREATION",
-}
-var Hook_DeletePolicy_value = map[string]int32{
-	"SUCCEEDED":            0,
-	"FAILED":               1,
-	"BEFORE_HOOK_CREATION": 2,
+var deletePolicyNames = [...]string{
+	"SUCCEEDED",
+	"FAILED",
+	"BEFORE_HOOK_CREATION",
 }
 
+func (x HookDeletePolicy) String() string { return deletePolicyNames[x] }
+
 // Hook defines a hook object.
 type Hook struct {
 	Name string `json:"name,omitempty"`
@@ -78,11 +60,11 @@ type Hook struct {
 	// Manifest is the manifest contents.
 	Manifest string `json:"manifest,omitempty"`
 	// Events are the events that this hook fires on.
-	Events []Hook_Event `json:"events,omitempty"`
+	Events []HookEvent `json:"events,omitempty"`
 	// LastRun indicates the date/time this was last run.
 	LastRun time.Time `json:"last_run,omitempty"`
 	// Weight indicates the sort order for execution among similar Hook type
-	Weight int32 `json:"weight,omitempty"`
+	Weight int `json:"weight,omitempty"`
 	// DeletePolicies are the policies that indicate when to delete the hook
-	DeletePolicies []Hook_DeletePolicy `json:"delete_policies,omitempty"`
+	DeletePolicies []HookDeletePolicy `json:"delete_policies,omitempty"`
 }
diff --git a/pkg/hapi/release/release.go b/pkg/hapi/release/release.go
index 147c029b615a6bd23a728bc7494f4449514c98a0..39edc03b4cc1c43b51c9cff62bc0301cecc029b1 100644
--- a/pkg/hapi/release/release.go
+++ b/pkg/hapi/release/release.go
@@ -18,8 +18,8 @@ type Release struct {
 	Manifest string `json:"manifest,omitempty"`
 	// Hooks are all of the hooks declared for this release.
 	Hooks []*Hook `json:"hooks,omitempty"`
-	// Version is an int32 which represents the version of the release.
-	Version int32 `json:"version,omitempty"`
+	// Version is an int which represents the version of the release.
+	Version int `json:"version,omitempty"`
 	// Namespace is the kubernetes namespace of the release.
 	Namespace string `json:"namespace,omitempty"`
 }
diff --git a/pkg/hapi/release/status.go b/pkg/hapi/release/status.go
index da26f07d9dc0d5e49136a41a2c7ea16e7676e835..1eebbb77424e673ab9e9386a6693c8ee9b23f33e 100644
--- a/pkg/hapi/release/status.go
+++ b/pkg/hapi/release/status.go
@@ -1,58 +1,45 @@
 package release
 
-type Status_Code int32
+type StatusCode int
 
 const (
 	// Status_UNKNOWN indicates that a release is in an uncertain state.
-	Status_UNKNOWN Status_Code = 0
+	Status_UNKNOWN StatusCode = iota
 	// Status_DEPLOYED indicates that the release has been pushed to Kubernetes.
-	Status_DEPLOYED Status_Code = 1
+	Status_DEPLOYED
 	// Status_DELETED indicates that a release has been deleted from Kubermetes.
-	Status_DELETED Status_Code = 2
+	Status_DELETED
 	// Status_SUPERSEDED indicates that this release object is outdated and a newer one exists.
-	Status_SUPERSEDED Status_Code = 3
+	Status_SUPERSEDED
 	// Status_FAILED indicates that the release was not successfully deployed.
-	Status_FAILED Status_Code = 4
+	Status_FAILED
 	// Status_DELETING indicates that a delete operation is underway.
-	Status_DELETING Status_Code = 5
+	Status_DELETING
 	// Status_PENDING_INSTALL indicates that an install operation is underway.
-	Status_PENDING_INSTALL Status_Code = 6
+	Status_PENDING_INSTALL
 	// Status_PENDING_UPGRADE indicates that an upgrade operation is underway.
-	Status_PENDING_UPGRADE Status_Code = 7
+	Status_PENDING_UPGRADE
 	// Status_PENDING_ROLLBACK indicates that an rollback operation is underway.
-	Status_PENDING_ROLLBACK Status_Code = 8
+	Status_PENDING_ROLLBACK
 )
 
-var Status_Code_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "DEPLOYED",
-	2: "DELETED",
-	3: "SUPERSEDED",
-	4: "FAILED",
-	5: "DELETING",
-	6: "PENDING_INSTALL",
-	7: "PENDING_UPGRADE",
-	8: "PENDING_ROLLBACK",
-}
-var Status_Code_value = map[string]int32{
-	"UNKNOWN":          0,
-	"DEPLOYED":         1,
-	"DELETED":          2,
-	"SUPERSEDED":       3,
-	"FAILED":           4,
-	"DELETING":         5,
-	"PENDING_INSTALL":  6,
-	"PENDING_UPGRADE":  7,
-	"PENDING_ROLLBACK": 8,
+var statusCodeNames = [...]string{
+	"UNKNOWN",
+	"DEPLOYED",
+	"DELETED",
+	"SUPERSEDED",
+	"FAILED",
+	"DELETING",
+	"PENDING_INSTALL",
+	"PENDING_UPGRADE",
+	"PENDING_ROLLBACK",
 }
 
-func (x Status_Code) String() string {
-	return Status_Code_name[int32(x)]
-}
+func (x StatusCode) String() string { return statusCodeNames[x] }
 
 // Status defines the status of a release.
 type Status struct {
-	Code Status_Code `json:"code,omitempty"`
+	Code StatusCode `json:"code,omitempty"`
 	// Cluster resources as kubectl would print them.
 	Resources string `json:"resources,omitempty"`
 	// Contains the rendered templates/NOTES.txt if available
diff --git a/pkg/hapi/release/test_run.go b/pkg/hapi/release/test_run.go
index 126560bd50674d17fcd3b9d8140297d638ce4295..b6098a8e9771d89aadffab1c915cfb07039e5806 100644
--- a/pkg/hapi/release/test_run.go
+++ b/pkg/hapi/release/test_run.go
@@ -2,36 +2,28 @@ package release
 
 import "time"
 
-type TestRun_Status int32
+type TestRunStatus int
 
 const (
-	TestRun_UNKNOWN TestRun_Status = 0
-	TestRun_SUCCESS TestRun_Status = 1
-	TestRun_FAILURE TestRun_Status = 2
-	TestRun_RUNNING TestRun_Status = 3
+	TestRun_UNKNOWN TestRunStatus = iota
+	TestRun_SUCCESS
+	TestRun_FAILURE
+	TestRun_RUNNING
 )
 
-var TestRun_Status_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "SUCCESS",
-	2: "FAILURE",
-	3: "RUNNING",
-}
-var TestRun_Status_value = map[string]int32{
-	"UNKNOWN": 0,
-	"SUCCESS": 1,
-	"FAILURE": 2,
-	"RUNNING": 3,
+var testRunStatusNames = [...]string{
+	"UNKNOWN",
+	"SUCCESS",
+	"FAILURE",
+	"RUNNING",
 }
 
-func (x TestRun_Status) String() string {
-	return TestRun_Status_name[int32(x)]
-}
+func (x TestRunStatus) String() string { return testRunStatusNames[x] }
 
 type TestRun struct {
-	Name        string         `json:"name,omitempty"`
-	Status      TestRun_Status `json:"status,omitempty"`
-	Info        string         `json:"info,omitempty"`
-	StartedAt   time.Time      `json:"started_at,omitempty"`
-	CompletedAt time.Time      `json:"completed_at,omitempty"`
+	Name        string        `json:"name,omitempty"`
+	Status      TestRunStatus `json:"status,omitempty"`
+	Info        string        `json:"info,omitempty"`
+	StartedAt   time.Time     `json:"started_at,omitempty"`
+	CompletedAt time.Time     `json:"completed_at,omitempty"`
 }
diff --git a/pkg/hapi/tiller.go b/pkg/hapi/tiller.go
index b26b34f5246340933d6982dbf79d981889ad8413..82091bfb7c7e02149c5300890b4e48f7bea15bd8 100644
--- a/pkg/hapi/tiller.go
+++ b/pkg/hapi/tiller.go
@@ -6,49 +6,36 @@ import (
 )
 
 // SortBy defines sort operations.
-type ListSort_SortBy int32
+type ListSortBy int
 
 const (
-	ListSort_UNKNOWN       ListSort_SortBy = 0
-	ListSort_NAME          ListSort_SortBy = 1
-	ListSort_LAST_RELEASED ListSort_SortBy = 2
+	ListSort_UNKNOWN ListSortBy = iota
+	ListSort_NAME
+	ListSort_LAST_RELEASED
 )
 
-var ListSort_SortBy_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "NAME",
-	2: "LAST_RELEASED",
-}
-var ListSort_SortBy_value = map[string]int32{
-	"UNKNOWN":       0,
-	"NAME":          1,
-	"LAST_RELEASED": 2,
+var sortByNames = [...]string{
+	"UNKNOWN",
+	"NAME",
+	"LAST_RELEASED",
 }
 
-func (x ListSort_SortBy) String() string {
-	return ListSort_SortBy_name[int32(x)]
-}
+func (x ListSortBy) String() string { return sortByNames[x] }
 
 // SortOrder defines sort orders to augment sorting operations.
-type ListSort_SortOrder int32
+type ListSortOrder int
 
 const (
-	ListSort_ASC  ListSort_SortOrder = 0
-	ListSort_DESC ListSort_SortOrder = 1
+	ListSort_ASC ListSortOrder = iota
+	ListSort_DESC
 )
 
-var ListSort_SortOrder_name = map[int32]string{
-	0: "ASC",
-	1: "DESC",
-}
-var ListSort_SortOrder_value = map[string]int32{
-	"ASC":  0,
-	"DESC": 1,
+var sortOrderNames = [...]string{
+	"ASC",
+	"DESC",
 }
 
-func (x ListSort_SortOrder) String() string {
-	return ListSort_SortOrder_name[int32(x)]
-}
+func (x ListSortOrder) String() string { return sortOrderNames[x] }
 
 // ListReleasesRequest requests a list of releases.
 //
@@ -65,14 +52,14 @@ type ListReleasesRequest struct {
 	// cause the next batch to return a set of results starting with 'dennis'.
 	Offset string `json:"offset,omityempty"`
 	// SortBy is the sort field that the ListReleases server should sort data before returning.
-	SortBy ListSort_SortBy `json:"sort_by,omityempty"`
+	SortBy ListSortBy `json:"sort_by,omityempty"`
 	// Filter is a regular expression used to filter which releases should be listed.
 	//
 	// Anything that matches the regexp will be included in the results.
 	Filter string `json:"filter,omityempty"`
 	// SortOrder is the ordering directive used for sorting.
-	SortOrder   ListSort_SortOrder    `json:"sort_order,omityempty"`
-	StatusCodes []release.Status_Code `json:"status_codes,omityempty"`
+	SortOrder   ListSortOrder        `json:"sort_order,omityempty"`
+	StatusCodes []release.StatusCode `json:"status_codes,omityempty"`
 	// Namespace is the filter to select releases only from a specific namespace.
 	Namespace string `json:"namespace,omityempty"`
 }
@@ -95,7 +82,7 @@ type GetReleaseStatusRequest struct {
 	// Name is the name of the release
 	Name string `json:"name,omitempty"`
 	// Version is the version of the release
-	Version int32 `json:"version,omitempty"`
+	Version int `json:"version,omitempty"`
 }
 
 // GetReleaseStatusResponse is the response indicating the status of the named release.
@@ -113,7 +100,7 @@ type GetReleaseContentRequest struct {
 	// The name of the release
 	Name string `json:"name,omityempty"`
 	// Version is the version of the release
-	Version int32 `json:"version,omityempty"`
+	Version int `json:"version,omityempty"`
 }
 
 // UpdateReleaseRequest updates a release.
@@ -152,7 +139,7 @@ type RollbackReleaseRequest struct {
 	// DisableHooks causes the server to skip running any hooks for the rollback
 	DisableHooks bool `json:"disable_hooks,omityempty"`
 	// Version is the version of the release to deploy.
-	Version int32 `json:"version,omityempty"`
+	Version int `json:"version,omityempty"`
 	// Performs pods restart for resources if applicable
 	Recreate bool `json:"recreate,omityempty"`
 	// timeout specifies the max amount of time any kubernetes client command can run.
@@ -216,7 +203,7 @@ type GetHistoryRequest struct {
 	// The name of the release.
 	Name string `json:"name,omityempty"`
 	// The maximum number of releases to include.
-	Max int32 `json:"max,omityempty"`
+	Max int `json:"max,omityempty"`
 }
 
 // TestReleaseRequest is a request to get the status of a release.
@@ -231,6 +218,6 @@ type TestReleaseRequest struct {
 
 // TestReleaseResponse represents a message from executing a test
 type TestReleaseResponse struct {
-	Msg    string                 `json:"msg,omityempty"`
-	Status release.TestRun_Status `json:"status,omityempty"`
+	Msg    string                `json:"msg,omityempty"`
+	Status release.TestRunStatus `json:"status,omityempty"`
 }
diff --git a/pkg/helm/client.go b/pkg/helm/client.go
index 170b628408fb57cc0bfc205e86f5d42f13c11fed..1c28184037a903bc4a24b40bf84fe74f4142c1b4 100644
--- a/pkg/helm/client.go
+++ b/pkg/helm/client.go
@@ -198,7 +198,7 @@ func (c *Client) RollbackRelease(rlsName string, opts ...RollbackOption) (*relea
 }
 
 // ReleaseStatus returns the given release's status.
-func (c *Client) ReleaseStatus(rlsName string, version int32) (*hapi.GetReleaseStatusResponse, error) {
+func (c *Client) ReleaseStatus(rlsName string, version int) (*hapi.GetReleaseStatusResponse, error) {
 	reqOpts := c.opts
 	req := &reqOpts.statusReq
 	req.Name = rlsName
@@ -211,7 +211,7 @@ func (c *Client) ReleaseStatus(rlsName string, version int32) (*hapi.GetReleaseS
 }
 
 // ReleaseContent returns the configuration for a given release.
-func (c *Client) ReleaseContent(name string, version int32) (*release.Release, error) {
+func (c *Client) ReleaseContent(name string, version int) (*release.Release, error) {
 	reqOpts := c.opts
 	req := &reqOpts.contentReq
 	req.Name = name
@@ -224,7 +224,7 @@ func (c *Client) ReleaseContent(name string, version int32) (*release.Release, e
 }
 
 // ReleaseHistory returns a release's revision history.
-func (c *Client) ReleaseHistory(rlsName string, max int32) ([]*release.Release, error) {
+func (c *Client) ReleaseHistory(rlsName string, max int) ([]*release.Release, error) {
 	reqOpts := c.opts
 	req := &reqOpts.histReq
 	req.Name = rlsName
diff --git a/pkg/helm/fake.go b/pkg/helm/fake.go
index 36618d4fd3874cb8209cf23425fd9adff355d0e9..509dd376141c32c2596ed3636d2d09635fc8c0a4 100644
--- a/pkg/helm/fake.go
+++ b/pkg/helm/fake.go
@@ -31,7 +31,7 @@ import (
 // FakeClient implements Interface
 type FakeClient struct {
 	Rels      []*release.Release
-	Responses map[string]release.TestRun_Status
+	Responses map[string]release.TestRunStatus
 	Opts      options
 }
 
@@ -108,7 +108,7 @@ func (c *FakeClient) RollbackRelease(rlsName string, opts ...RollbackOption) (*r
 }
 
 // ReleaseStatus returns a release status response with info from the matching release name.
-func (c *FakeClient) ReleaseStatus(rlsName string, version int32) (*hapi.GetReleaseStatusResponse, error) {
+func (c *FakeClient) ReleaseStatus(rlsName string, version int) (*hapi.GetReleaseStatusResponse, error) {
 	for _, rel := range c.Rels {
 		if rel.Name == rlsName {
 			return &hapi.GetReleaseStatusResponse{
@@ -122,7 +122,7 @@ func (c *FakeClient) ReleaseStatus(rlsName string, version int32) (*hapi.GetRele
 }
 
 // ReleaseContent returns the configuration for the matching release name in the fake release client.
-func (c *FakeClient) ReleaseContent(rlsName string, version int32) (*release.Release, error) {
+func (c *FakeClient) ReleaseContent(rlsName string, version int) (*release.Release, error) {
 	for _, rel := range c.Rels {
 		if rel.Name == rlsName {
 			return rel, nil
@@ -132,7 +132,7 @@ func (c *FakeClient) ReleaseContent(rlsName string, version int32) (*release.Rel
 }
 
 // ReleaseHistory returns a release's revision history.
-func (c *FakeClient) ReleaseHistory(rlsName string, max int32) ([]*release.Release, error) {
+func (c *FakeClient) ReleaseHistory(rlsName string, max int) ([]*release.Release, error) {
 	return c.Rels, nil
 }
 
@@ -147,7 +147,7 @@ func (c *FakeClient) RunReleaseTest(rlsName string, opts ...ReleaseTestOption) (
 		for m, s := range c.Responses {
 			wg.Add(1)
 
-			go func(msg string, status release.TestRun_Status) {
+			go func(msg string, status release.TestRunStatus) {
 				defer wg.Done()
 				results <- &hapi.TestReleaseResponse{Msg: msg, Status: status}
 			}(m, s)
@@ -179,9 +179,9 @@ metadata:
 // MockReleaseOptions allows for user-configurable options on mock release objects.
 type MockReleaseOptions struct {
 	Name       string
-	Version    int32
+	Version    int
 	Chart      *chart.Chart
-	StatusCode release.Status_Code
+	StatusCode release.StatusCode
 	Namespace  string
 }
 
@@ -194,7 +194,7 @@ func ReleaseMock(opts *MockReleaseOptions) *release.Release {
 		name = "testrelease-" + string(rand.Intn(100))
 	}
 
-	var version int32 = 1
+	var version int = 1
 	if opts.Version != 0 {
 		version = opts.Version
 	}
@@ -241,7 +241,7 @@ func ReleaseMock(opts *MockReleaseOptions) *release.Release {
 				Path:     "pre-install-hook.yaml",
 				Manifest: MockHookTemplate,
 				LastRun:  date,
-				Events:   []release.Hook_Event{release.Hook_PRE_INSTALL},
+				Events:   []release.HookEvent{release.Hook_PRE_INSTALL},
 			},
 		},
 		Manifest: MockManifest,
diff --git a/pkg/helm/helm_test.go b/pkg/helm/helm_test.go
index e0ae9f9c4348590332f3a2ffa6f04197fe0e196d..dacb9ec3038a63db658e8db59f45687c78b57e48 100644
--- a/pkg/helm/helm_test.go
+++ b/pkg/helm/helm_test.go
@@ -40,9 +40,9 @@ func TestListReleases_VerifyOptions(t *testing.T) {
 	var limit = 2
 	var offset = "offset"
 	var filter = "filter"
-	var sortBy = int32(2)
-	var sortOrd = int32(1)
-	var codes = []rls.Status_Code{
+	var sortBy = 2
+	var sortOrd = 1
+	var codes = []rls.StatusCode{
 		rls.Status_FAILED,
 		rls.Status_DELETED,
 		rls.Status_DEPLOYED,
@@ -55,8 +55,8 @@ func TestListReleases_VerifyOptions(t *testing.T) {
 		Limit:       int64(limit),
 		Offset:      offset,
 		Filter:      filter,
-		SortBy:      hapi.ListSort_SortBy(sortBy),
-		SortOrder:   hapi.ListSort_SortOrder(sortOrd),
+		SortBy:      hapi.ListSortBy(sortBy),
+		SortOrder:   hapi.ListSortOrder(sortOrd),
 		StatusCodes: codes,
 		Namespace:   namespace,
 	}
@@ -240,7 +240,7 @@ func TestRollbackRelease_VerifyOptions(t *testing.T) {
 	// Options testdata
 	var disableHooks = true
 	var releaseName = "test"
-	var revision = int32(2)
+	var revision = 2
 	var dryRun = true
 
 	// Expected RollbackReleaseRequest message
@@ -283,7 +283,7 @@ func TestRollbackRelease_VerifyOptions(t *testing.T) {
 func TestReleaseStatus_VerifyOptions(t *testing.T) {
 	// Options testdata
 	var releaseName = "test"
-	var revision = int32(2)
+	var revision = 2
 
 	// Expected GetReleaseStatusRequest message
 	exp := &hapi.GetReleaseStatusRequest{
@@ -317,7 +317,7 @@ func TestReleaseContent_VerifyOptions(t *testing.T) {
 	t.Skip("refactoring out")
 	// Options testdata
 	var releaseName = "test"
-	var revision = int32(2)
+	var revision = 2
 
 	// Expected GetReleaseContentRequest message
 	exp := &hapi.GetReleaseContentRequest{
diff --git a/pkg/helm/interface.go b/pkg/helm/interface.go
index eced75ecfec0a6e2364028b516c10fa40a27e513..39c029d1b94ba0cfaf5b3aa57c0b9e398e7da5bf 100644
--- a/pkg/helm/interface.go
+++ b/pkg/helm/interface.go
@@ -28,11 +28,11 @@ type Interface interface {
 	InstallRelease(chStr, namespace string, opts ...InstallOption) (*release.Release, error)
 	InstallReleaseFromChart(chart *chart.Chart, namespace string, opts ...InstallOption) (*release.Release, error)
 	DeleteRelease(rlsName string, opts ...DeleteOption) (*hapi.UninstallReleaseResponse, error)
-	ReleaseStatus(rlsName string, version int32) (*hapi.GetReleaseStatusResponse, error)
+	ReleaseStatus(rlsName string, version int) (*hapi.GetReleaseStatusResponse, error)
 	UpdateRelease(rlsName, chStr string, opts ...UpdateOption) (*release.Release, error)
 	UpdateReleaseFromChart(rlsName string, chart *chart.Chart, opts ...UpdateOption) (*release.Release, error)
 	RollbackRelease(rlsName string, opts ...RollbackOption) (*release.Release, error)
-	ReleaseContent(rlsName string, version int32) (*release.Release, error)
-	ReleaseHistory(rlsName string, max int32) ([]*release.Release, error)
+	ReleaseContent(rlsName string, version int) (*release.Release, error)
+	ReleaseHistory(rlsName string, max int) ([]*release.Release, error)
 	RunReleaseTest(rlsName string, opts ...ReleaseTestOption) (<-chan *hapi.TestReleaseResponse, <-chan error)
 }
diff --git a/pkg/helm/option.go b/pkg/helm/option.go
index 9fb5450e957952688063c664e70ae0ff0325e87c..6c1df5893bb695b53e1d0f3fa38c8a0391690557 100644
--- a/pkg/helm/option.go
+++ b/pkg/helm/option.go
@@ -116,24 +116,24 @@ func ReleaseListLimit(limit int) ReleaseListOption {
 }
 
 // ReleaseListOrder specifies how to order a list of releases.
-func ReleaseListOrder(order int32) ReleaseListOption {
+func ReleaseListOrder(order int) ReleaseListOption {
 	return func(opts *options) {
-		opts.listReq.SortOrder = hapi.ListSort_SortOrder(order)
+		opts.listReq.SortOrder = hapi.ListSortOrder(order)
 	}
 }
 
 // ReleaseListSort specifies how to sort a release list.
-func ReleaseListSort(sort int32) ReleaseListOption {
+func ReleaseListSort(sort int) ReleaseListOption {
 	return func(opts *options) {
-		opts.listReq.SortBy = hapi.ListSort_SortBy(sort)
+		opts.listReq.SortBy = hapi.ListSortBy(sort)
 	}
 }
 
 // ReleaseListStatuses specifies which status codes should be returned.
-func ReleaseListStatuses(statuses []release.Status_Code) ReleaseListOption {
+func ReleaseListStatuses(statuses []release.StatusCode) ReleaseListOption {
 	return func(opts *options) {
 		if len(statuses) == 0 {
-			statuses = []release.Status_Code{release.Status_DEPLOYED}
+			statuses = []release.StatusCode{release.Status_DEPLOYED}
 		}
 		opts.listReq.StatusCodes = statuses
 	}
@@ -306,7 +306,7 @@ func RollbackForce(force bool) RollbackOption {
 }
 
 // RollbackVersion sets the version of the release to deploy.
-func RollbackVersion(ver int32) RollbackOption {
+func RollbackVersion(ver int) RollbackOption {
 	return func(opts *options) {
 		opts.rollbackReq.Version = ver
 	}
diff --git a/pkg/lint/rules/chartfile.go b/pkg/lint/rules/chartfile.go
index e97a1448815adf61787e2d00ce3099d53ec627d8..3d7d10620e81a04a21ebdfbcf6712a59a8798567 100644
--- a/pkg/lint/rules/chartfile.go
+++ b/pkg/lint/rules/chartfile.go
@@ -21,7 +21,6 @@ import (
 	"fmt"
 	"os"
 	"path/filepath"
-	"strings"
 
 	"github.com/Masterminds/semver"
 
@@ -52,7 +51,6 @@ func Chartfile(linter *support.Linter) {
 
 	// Chart metadata
 	linter.RunLinterRule(support.ErrorSev, chartFileName, validateChartVersion(chartFile))
-	linter.RunLinterRule(support.ErrorSev, chartFileName, validateChartEngine(chartFile))
 	linter.RunLinterRule(support.ErrorSev, chartFileName, validateChartMaintainer(chartFile))
 	linter.RunLinterRule(support.ErrorSev, chartFileName, validateChartSources(chartFile))
 	linter.RunLinterRule(support.InfoSev, chartFileName, validateChartIconPresence(chartFile))
@@ -113,29 +111,6 @@ func validateChartVersion(cf *chart.Metadata) error {
 	return nil
 }
 
-func validateChartEngine(cf *chart.Metadata) error {
-	if cf.Engine == "" {
-		return nil
-	}
-
-	keys := make([]string, 0, len(chart.Metadata_Engine_value))
-	for engine := range chart.Metadata_Engine_value {
-		str := strings.ToLower(engine)
-
-		if str == "unknown" {
-			continue
-		}
-
-		if str == cf.Engine {
-			return nil
-		}
-
-		keys = append(keys, str)
-	}
-
-	return fmt.Errorf("engine '%v' not valid. Valid options are %v", cf.Engine, keys)
-}
-
 func validateChartMaintainer(cf *chart.Metadata) error {
 	for _, maintainer := range cf.Maintainers {
 		if maintainer.Name == "" {
diff --git a/pkg/lint/rules/chartfile_test.go b/pkg/lint/rules/chartfile_test.go
index dca8ab4777be8ce42ec66998c3bc17d37c90be64..83ddd4a30912b629903344c4db440daf6a591c8c 100644
--- a/pkg/lint/rules/chartfile_test.go
+++ b/pkg/lint/rules/chartfile_test.go
@@ -120,24 +120,6 @@ func TestValidateChartVersion(t *testing.T) {
 	}
 }
 
-func TestValidateChartEngine(t *testing.T) {
-	var successTest = []string{"", "gotpl"}
-
-	for _, engine := range successTest {
-		badChart.Engine = engine
-		err := validateChartEngine(badChart)
-		if err != nil {
-			t.Errorf("validateChartEngine(%s) to return no error, got a linter error %s", engine, err.Error())
-		}
-	}
-
-	badChart.Engine = "foobar"
-	err := validateChartEngine(badChart)
-	if err == nil || !strings.Contains(err.Error(), "not valid. Valid options are [gotpl") {
-		t.Errorf("validateChartEngine(%s) to return an error, got no error", badChart.Engine)
-	}
-}
-
 func TestValidateChartMaintainer(t *testing.T) {
 	var failTest = []struct {
 		Name     string
diff --git a/pkg/releasetesting/environment.go b/pkg/releasetesting/environment.go
index 55dae3e933f88b2749622a5d22a61fb48e522f31..aac9c3845950e616454852e89238be04b24a0d4c 100644
--- a/pkg/releasetesting/environment.go
+++ b/pkg/releasetesting/environment.go
@@ -105,7 +105,7 @@ func (env *Environment) streamUnknown(name, info string) error {
 	return env.streamMessage(msg, release.TestRun_UNKNOWN)
 }
 
-func (env *Environment) streamMessage(msg string, status release.TestRun_Status) error {
+func (env *Environment) streamMessage(msg string, status release.TestRunStatus) error {
 	resp := &hapi.TestReleaseResponse{Msg: msg, Status: status}
 	env.Mesages <- resp
 	return nil
diff --git a/pkg/releasetesting/test_suite_test.go b/pkg/releasetesting/test_suite_test.go
index 750cb0deea136200b57103f692a421e5a544fe6d..ada69ba1326fdec4dcb6f73a70cee80907309500 100644
--- a/pkg/releasetesting/test_suite_test.go
+++ b/pkg/releasetesting/test_suite_test.go
@@ -243,7 +243,7 @@ func releaseStub() *release.Release {
 				Kind:     "Pod",
 				Path:     "finding-nemo",
 				Manifest: manifestWithTestSuccessHook,
-				Events: []release.Hook_Event{
+				Events: []release.HookEvent{
 					release.Hook_RELEASE_TEST_SUCCESS,
 				},
 			},
@@ -252,7 +252,7 @@ func releaseStub() *release.Release {
 				Kind:     "ConfigMap",
 				Path:     "test-cm",
 				Manifest: manifestWithInstallHooks,
-				Events: []release.Hook_Event{
+				Events: []release.HookEvent{
 					release.Hook_POST_INSTALL,
 					release.Hook_PRE_DELETE,
 				},
diff --git a/pkg/releaseutil/filter.go b/pkg/releaseutil/filter.go
index c724617bd4d61ddc415ac124032050d8096fb244..6a9fc89d06aee20f94a751dc1ce5b53dca54908b 100644
--- a/pkg/releaseutil/filter.go
+++ b/pkg/releaseutil/filter.go
@@ -68,7 +68,7 @@ func All(filters ...FilterFunc) FilterFunc {
 }
 
 // StatusFilter filters a set of releases by status code.
-func StatusFilter(status rspb.Status_Code) FilterFunc {
+func StatusFilter(status rspb.StatusCode) FilterFunc {
 	return FilterFunc(func(rls *rspb.Release) bool {
 		if rls == nil {
 			return true
diff --git a/pkg/releaseutil/filter_test.go b/pkg/releaseutil/filter_test.go
index 6b553e455ca29f4412626b483f8f8f252431c1f3..447df8015d3515d748afbd2fe3e2c807769b9b78 100644
--- a/pkg/releaseutil/filter_test.go
+++ b/pkg/releaseutil/filter_test.go
@@ -31,9 +31,9 @@ func TestFilterAny(t *testing.T) {
 	r0, r1 := ls[0], ls[1]
 	switch {
 	case r0.Info.Status.Code != rspb.Status_DELETED:
-		t.Fatalf("expected DELETED result, got '%s'", r1.Info.Status.Code)
+		t.Fatalf("expected DELETED result, got '%s'", r1.Info.Status.Code.String())
 	case r1.Info.Status.Code != rspb.Status_DELETED:
-		t.Fatalf("expected DELETED result, got '%s'", r1.Info.Status.Code)
+		t.Fatalf("expected DELETED result, got '%s'", r1.Info.Status.Code.String())
 	}
 }
 
diff --git a/pkg/releaseutil/sorter_test.go b/pkg/releaseutil/sorter_test.go
index 2b48a2e5c32ab2c3566e5e2c2bcebdd2f4d89809..8cf9d3b40b980e2c8d6ae3ccc79da2dfc38b012b 100644
--- a/pkg/releaseutil/sorter_test.go
+++ b/pkg/releaseutil/sorter_test.go
@@ -32,7 +32,7 @@ var releases = []*rspb.Release{
 	tsRelease("vocal-dogs", 3, 6000, rspb.Status_DELETED),
 }
 
-func tsRelease(name string, vers int32, dur time.Duration, code rspb.Status_Code) *rspb.Release {
+func tsRelease(name string, vers int, dur time.Duration, code rspb.StatusCode) *rspb.Release {
 	tmsp := time.Now().Add(time.Duration(dur))
 	info := &rspb.Info{Status: &rspb.Status{Code: code}, LastDeployed: tmsp}
 	return &rspb.Release{
diff --git a/pkg/storage/driver/cfgmaps.go b/pkg/storage/driver/cfgmaps.go
index 2f507d8081fd0adeeef43e5c3668dded6d881cc9..b585f58320effc0115b1440854c3d0cee268209d 100644
--- a/pkg/storage/driver/cfgmaps.go
+++ b/pkg/storage/driver/cfgmaps.go
@@ -244,8 +244,8 @@ func newConfigMapsObject(key string, rls *rspb.Release, lbs labels) (*v1.ConfigM
 	// apply labels
 	lbs.set("NAME", rls.Name)
 	lbs.set("OWNER", owner)
-	lbs.set("STATUS", rspb.Status_Code_name[int32(rls.Info.Status.Code)])
-	lbs.set("VERSION", strconv.Itoa(int(rls.Version)))
+	lbs.set("STATUS", rls.Info.Status.Code.String())
+	lbs.set("VERSION", strconv.Itoa(rls.Version))
 
 	// create and return configmap object
 	return &v1.ConfigMap{
diff --git a/pkg/storage/driver/cfgmaps_test.go b/pkg/storage/driver/cfgmaps_test.go
index 3f16ca53fd8c1f1ab104fc8069108c36811cd359..b89c641dafff1bc8ebc8aa3c4c990cb4f0d5d1ef 100644
--- a/pkg/storage/driver/cfgmaps_test.go
+++ b/pkg/storage/driver/cfgmaps_test.go
@@ -32,7 +32,7 @@ func TestConfigMapName(t *testing.T) {
 }
 
 func TestConfigMapGet(t *testing.T) {
-	vers := int32(1)
+	vers := 1
 	name := "smug-pigeon"
 	namespace := "default"
 	key := testKey(name, vers)
@@ -52,7 +52,7 @@ func TestConfigMapGet(t *testing.T) {
 }
 
 func TestUNcompressedConfigMapGet(t *testing.T) {
-	vers := int32(1)
+	vers := 1
 	name := "smug-pigeon"
 	namespace := "default"
 	key := testKey(name, vers)
@@ -133,7 +133,7 @@ func TestConfigMapList(t *testing.T) {
 func TestConfigMapCreate(t *testing.T) {
 	cfgmaps := newTestFixtureCfgMaps(t)
 
-	vers := int32(1)
+	vers := 1
 	name := "smug-pigeon"
 	namespace := "default"
 	key := testKey(name, vers)
@@ -157,7 +157,7 @@ func TestConfigMapCreate(t *testing.T) {
 }
 
 func TestConfigMapUpdate(t *testing.T) {
-	vers := int32(1)
+	vers := 1
 	name := "smug-pigeon"
 	namespace := "default"
 	key := testKey(name, vers)
@@ -181,6 +181,6 @@ func TestConfigMapUpdate(t *testing.T) {
 
 	// check release has actually been updated by comparing modified fields
 	if rel.Info.Status.Code != got.Info.Status.Code {
-		t.Errorf("Expected status %s, got status %s", rel.Info.Status.Code, got.Info.Status.Code)
+		t.Errorf("Expected status %s, got status %s", rel.Info.Status.Code.String(), got.Info.Status.Code.String())
 	}
 }
diff --git a/pkg/storage/driver/mock_test.go b/pkg/storage/driver/mock_test.go
index 62662b53d760a2d1ec4daff301d9ca94d27c8540..1180067b523577e0697f1e28609db92f72511f04 100644
--- a/pkg/storage/driver/mock_test.go
+++ b/pkg/storage/driver/mock_test.go
@@ -28,7 +28,7 @@ import (
 	rspb "k8s.io/helm/pkg/hapi/release"
 )
 
-func releaseStub(name string, vers int32, namespace string, code rspb.Status_Code) *rspb.Release {
+func releaseStub(name string, vers int, namespace string, code rspb.StatusCode) *rspb.Release {
 	return &rspb.Release{
 		Name:      name,
 		Version:   vers,
@@ -37,7 +37,7 @@ func releaseStub(name string, vers int32, namespace string, code rspb.Status_Cod
 	}
 }
 
-func testKey(name string, vers int32) string {
+func testKey(name string, vers int) string {
 	return fmt.Sprintf("%s.v%d", name, vers)
 }
 
diff --git a/pkg/storage/driver/records.go b/pkg/storage/driver/records.go
index 2ea933901a5dcb53363a496617e5957521e8850a..1a8a1d564f8a4f2c41221b81d6cd005a804e32be 100644
--- a/pkg/storage/driver/records.go
+++ b/pkg/storage/driver/records.go
@@ -93,7 +93,7 @@ func (rs *records) Replace(key string, rec *record) *record {
 	return nil
 }
 
-func (rs records) FindByVersion(vers int32) (int, bool) {
+func (rs records) FindByVersion(vers int) (int, bool) {
 	i := sort.Search(len(rs), func(i int) bool {
 		return rs[i].rls.Version == vers
 	})
@@ -126,8 +126,8 @@ func newRecord(key string, rls *rspb.Release) *record {
 	lbs.init()
 	lbs.set("NAME", rls.Name)
 	lbs.set("OWNER", "TILLER")
-	lbs.set("STATUS", rspb.Status_Code_name[int32(rls.Info.Status.Code)])
-	lbs.set("VERSION", strconv.Itoa(int(rls.Version)))
+	lbs.set("STATUS", rls.Info.Status.Code.String())
+	lbs.set("VERSION", strconv.Itoa(rls.Version))
 
 	// return &record{key: key, lbs: lbs, rls: proto.Clone(rls).(*rspb.Release)}
 	return &record{key: key, lbs: lbs, rls: rls}
diff --git a/pkg/storage/driver/secrets.go b/pkg/storage/driver/secrets.go
index 47b95e2aa56d44c2afed6b5fc15e94e13318a71d..db4e091dab7250578db91d34c8d1fa5f6a1a0106 100644
--- a/pkg/storage/driver/secrets.go
+++ b/pkg/storage/driver/secrets.go
@@ -244,8 +244,8 @@ func newSecretsObject(key string, rls *rspb.Release, lbs labels) (*v1.Secret, er
 	// apply labels
 	lbs.set("NAME", rls.Name)
 	lbs.set("OWNER", owner)
-	lbs.set("STATUS", rspb.Status_Code_name[int32(rls.Info.Status.Code)])
-	lbs.set("VERSION", strconv.Itoa(int(rls.Version)))
+	lbs.set("STATUS", rls.Info.Status.Code.String())
+	lbs.set("VERSION", strconv.Itoa(rls.Version))
 
 	// create and return secret object
 	return &v1.Secret{
diff --git a/pkg/storage/driver/secrets_test.go b/pkg/storage/driver/secrets_test.go
index 0aee4088c976a0607fc616f92bdf9d41a711c5db..fc6663a265a3a6e0484a555560fb4da2ba036d1a 100644
--- a/pkg/storage/driver/secrets_test.go
+++ b/pkg/storage/driver/secrets_test.go
@@ -32,7 +32,7 @@ func TestSecretName(t *testing.T) {
 }
 
 func TestSecretGet(t *testing.T) {
-	vers := int32(1)
+	vers := 1
 	name := "smug-pigeon"
 	namespace := "default"
 	key := testKey(name, vers)
@@ -52,7 +52,7 @@ func TestSecretGet(t *testing.T) {
 }
 
 func TestUNcompressedSecretGet(t *testing.T) {
-	vers := int32(1)
+	vers := 1
 	name := "smug-pigeon"
 	namespace := "default"
 	key := testKey(name, vers)
@@ -133,7 +133,7 @@ func TestSecretList(t *testing.T) {
 func TestSecretCreate(t *testing.T) {
 	secrets := newTestFixtureSecrets(t)
 
-	vers := int32(1)
+	vers := 1
 	name := "smug-pigeon"
 	namespace := "default"
 	key := testKey(name, vers)
@@ -157,7 +157,7 @@ func TestSecretCreate(t *testing.T) {
 }
 
 func TestSecretUpdate(t *testing.T) {
-	vers := int32(1)
+	vers := 1
 	name := "smug-pigeon"
 	namespace := "default"
 	key := testKey(name, vers)
@@ -181,6 +181,6 @@ func TestSecretUpdate(t *testing.T) {
 
 	// check release has actually been updated by comparing modified fields
 	if rel.Info.Status.Code != got.Info.Status.Code {
-		t.Errorf("Expected status %s, got status %s", rel.Info.Status.Code, got.Info.Status.Code)
+		t.Errorf("Expected status %s, got status %s", rel.Info.Status.Code.String(), got.Info.Status.Code.String())
 	}
 }
diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go
index 69f9490e2a99cf48d0f9afea836d27472ccdf0d0..302ca8b9b01316cc441b5b54fd1a896c407328a3 100644
--- a/pkg/storage/storage.go
+++ b/pkg/storage/storage.go
@@ -40,7 +40,7 @@ type Storage struct {
 // Get retrieves the release from storage. An error is returned
 // if the storage driver failed to fetch the release, or the
 // release identified by the key, version pair does not exist.
-func (s *Storage) Get(name string, version int32) (*rspb.Release, error) {
+func (s *Storage) Get(name string, version int) (*rspb.Release, error) {
 	s.Log("getting release %q", makeKey(name, version))
 	return s.Driver.Get(makeKey(name, version))
 }
@@ -68,7 +68,7 @@ func (s *Storage) Update(rls *rspb.Release) error {
 // Delete deletes the release from storage. An error is returned if
 // the storage backend fails to delete the release or if the release
 // does not exist.
-func (s *Storage) Delete(name string, version int32) (*rspb.Release, error) {
+func (s *Storage) Delete(name string, version int) (*rspb.Release, error) {
 	s.Log("deleting release %q", makeKey(name, version))
 	return s.Driver.Delete(makeKey(name, version))
 }
@@ -226,7 +226,7 @@ func (s *Storage) Last(name string) (*rspb.Release, error) {
 // makeKey concatenates a release name and version into
 // a string with format ```<release_name>#v<version>```.
 // This key is used to uniquely identify storage objects.
-func makeKey(rlsname string, version int32) string {
+func makeKey(rlsname string, version int) string {
 	return fmt.Sprintf("%s.v%d", rlsname, version)
 }
 
diff --git a/pkg/storage/storage_test.go b/pkg/storage/storage_test.go
index 6a7f86652294f2cd980eeae880af0930bb6ca052..d4c977672a398431ce4f4bcc21df97b5b70d571a 100644
--- a/pkg/storage/storage_test.go
+++ b/pkg/storage/storage_test.go
@@ -169,7 +169,7 @@ func TestStorageDeployed(t *testing.T) {
 	storage := Init(driver.NewMemory())
 
 	const name = "angry-bird"
-	const vers = int32(4)
+	const vers = 4
 
 	// setup storage with test releases
 	setup := func() {
@@ -201,7 +201,7 @@ func TestStorageDeployed(t *testing.T) {
 	case rls.Version != vers:
 		t.Fatalf("Expected release version %d, actual %d\n", vers, rls.Version)
 	case rls.Info.Status.Code != rspb.Status_DEPLOYED:
-		t.Fatalf("Expected release status 'DEPLOYED', actual %s\n", rls.Info.Status.Code)
+		t.Fatalf("Expected release status 'DEPLOYED', actual %s\n", rls.Info.Status.Code.String())
 	}
 }
 
@@ -286,7 +286,7 @@ func TestStorageRemoveLeastRecent(t *testing.T) {
 
 	// We expect the existing records to be 3, 4, and 5.
 	for i, item := range hist {
-		v := int(item.Version)
+		v := item.Version
 		if expect := i + 3; v != expect {
 			t.Errorf("Expected release %d, got %d", expect, v)
 		}
@@ -327,10 +327,10 @@ func TestStorageLast(t *testing.T) {
 
 type ReleaseTestData struct {
 	Name      string
-	Version   int32
+	Version   int
 	Manifest  string
 	Namespace string
-	Status    rspb.Status_Code
+	Status    rspb.StatusCode
 }
 
 func (test ReleaseTestData) ToRelease() *rspb.Release {
diff --git a/pkg/tiller/hooks.go b/pkg/tiller/hooks.go
index 262f5cb97b2e5dbeb3c06c9cf5103cfe35b5a7a6..0bb468e21a8edf0f2f727f62e28e56777ee38399 100644
--- a/pkg/tiller/hooks.go
+++ b/pkg/tiller/hooks.go
@@ -31,7 +31,7 @@ import (
 	util "k8s.io/helm/pkg/releaseutil"
 )
 
-var events = map[string]release.Hook_Event{
+var events = map[string]release.HookEvent{
 	hooks.PreInstall:         release.Hook_PRE_INSTALL,
 	hooks.PostInstall:        release.Hook_POST_INSTALL,
 	hooks.PreDelete:          release.Hook_PRE_DELETE,
@@ -45,7 +45,7 @@ var events = map[string]release.Hook_Event{
 }
 
 // deletePolices represents a mapping between the key in the annotation for label deleting policy and its real meaning
-var deletePolices = map[string]release.Hook_DeletePolicy{
+var deletePolices = map[string]release.HookDeletePolicy{
 	hooks.HookSucceeded:      release.Hook_SUCCEEDED,
 	hooks.HookFailed:         release.Hook_FAILED,
 	hooks.BeforeHookCreation: release.Hook_BEFORE_HOOK_CREATION,
@@ -167,9 +167,9 @@ func (file *manifestFile) sort(result *result) error {
 			Kind:           entry.Kind,
 			Path:           file.path,
 			Manifest:       m,
-			Events:         []release.Hook_Event{},
+			Events:         []release.HookEvent{},
 			Weight:         hw,
-			DeletePolicies: []release.Hook_DeletePolicy{},
+			DeletePolicies: []release.HookDeletePolicy{},
 		}
 
 		isUnknownHook := false
@@ -213,14 +213,13 @@ func hasAnyAnnotation(entry util.SimpleHead) bool {
 	return true
 }
 
-func calculateHookWeight(entry util.SimpleHead) int32 {
+func calculateHookWeight(entry util.SimpleHead) int {
 	hws := entry.Metadata.Annotations[hooks.HookWeightAnno]
 	hw, err := strconv.Atoi(hws)
 	if err != nil {
 		hw = 0
 	}
-
-	return int32(hw)
+	return hw
 }
 
 func operateAnnotationValues(entry util.SimpleHead, annotation string, operate func(p string)) {
diff --git a/pkg/tiller/hooks_test.go b/pkg/tiller/hooks_test.go
index 8102b0f16e74ca3446abf7a91ecaff12623fb0df..1f4fc368f661c03eaa417845f5f9701964fe1b21 100644
--- a/pkg/tiller/hooks_test.go
+++ b/pkg/tiller/hooks_test.go
@@ -33,14 +33,14 @@ func TestSortManifests(t *testing.T) {
 		name     []string
 		path     string
 		kind     []string
-		hooks    map[string][]release.Hook_Event
+		hooks    map[string][]release.HookEvent
 		manifest string
 	}{
 		{
 			name:  []string{"first"},
 			path:  "one",
 			kind:  []string{"Job"},
-			hooks: map[string][]release.Hook_Event{"first": {release.Hook_PRE_INSTALL}},
+			hooks: map[string][]release.HookEvent{"first": {release.Hook_PRE_INSTALL}},
 			manifest: `apiVersion: v1
 kind: Job
 metadata:
@@ -55,7 +55,7 @@ metadata:
 			name:  []string{"second"},
 			path:  "two",
 			kind:  []string{"ReplicaSet"},
-			hooks: map[string][]release.Hook_Event{"second": {release.Hook_POST_INSTALL}},
+			hooks: map[string][]release.HookEvent{"second": {release.Hook_POST_INSTALL}},
 			manifest: `kind: ReplicaSet
 apiVersion: v1beta1
 metadata:
@@ -67,7 +67,7 @@ metadata:
 			name:  []string{"third"},
 			path:  "three",
 			kind:  []string{"ReplicaSet"},
-			hooks: map[string][]release.Hook_Event{"third": nil},
+			hooks: map[string][]release.HookEvent{"third": nil},
 			manifest: `kind: ReplicaSet
 apiVersion: v1beta1
 metadata:
@@ -79,7 +79,7 @@ metadata:
 			name:  []string{"fourth"},
 			path:  "four",
 			kind:  []string{"Pod"},
-			hooks: map[string][]release.Hook_Event{"fourth": nil},
+			hooks: map[string][]release.HookEvent{"fourth": nil},
 			manifest: `kind: Pod
 apiVersion: v1
 metadata:
@@ -90,7 +90,7 @@ metadata:
 			name:  []string{"fifth"},
 			path:  "five",
 			kind:  []string{"ReplicaSet"},
-			hooks: map[string][]release.Hook_Event{"fifth": {release.Hook_POST_DELETE, release.Hook_POST_INSTALL}},
+			hooks: map[string][]release.HookEvent{"fifth": {release.Hook_POST_DELETE, release.Hook_POST_INSTALL}},
 			manifest: `kind: ReplicaSet
 apiVersion: v1beta1
 metadata:
@@ -103,21 +103,21 @@ metadata:
 			name:     []string{"sixth"},
 			path:     "six/_six",
 			kind:     []string{"ReplicaSet"},
-			hooks:    map[string][]release.Hook_Event{"sixth": nil},
+			hooks:    map[string][]release.HookEvent{"sixth": nil},
 			manifest: `invalid manifest`, // This will fail if partial is not skipped.
 		}, {
 			// Regression test: files with no content should be skipped.
 			name:     []string{"seventh"},
 			path:     "seven",
 			kind:     []string{"ReplicaSet"},
-			hooks:    map[string][]release.Hook_Event{"seventh": nil},
+			hooks:    map[string][]release.HookEvent{"seventh": nil},
 			manifest: "",
 		},
 		{
 			name:  []string{"eighth", "example-test"},
 			path:  "eight",
 			kind:  []string{"ConfigMap", "Pod"},
-			hooks: map[string][]release.Hook_Event{"eighth": nil, "example-test": {release.Hook_RELEASE_TEST_SUCCESS}},
+			hooks: map[string][]release.HookEvent{"eighth": nil, "example-test": {release.Hook_RELEASE_TEST_SUCCESS}},
 			manifest: `kind: ConfigMap
 apiVersion: v1
 metadata:
diff --git a/pkg/tiller/release_history.go b/pkg/tiller/release_history.go
index df0982548a5062cb98c470d4a7ede224045260ac..7d0008844e5f811c05be9217b35326f455d9408f 100644
--- a/pkg/tiller/release_history.go
+++ b/pkg/tiller/release_history.go
@@ -38,7 +38,7 @@ func (s *ReleaseServer) GetHistory(req *hapi.GetHistoryRequest) ([]*release.Rele
 	relutil.Reverse(h, relutil.SortByRevision)
 
 	var rels []*release.Release
-	for i := 0; i < min(len(h), int(req.Max)); i++ {
+	for i := 0; i < min(len(h), req.Max); i++ {
 		rels = append(rels, h[i])
 	}
 
diff --git a/pkg/tiller/release_history_test.go b/pkg/tiller/release_history_test.go
index 6cdbb0f0cc4935d2cfbc847a4feeaad116dd33b9..e247c79e1b87a157826f98b69bffb12dd4575b95 100644
--- a/pkg/tiller/release_history_test.go
+++ b/pkg/tiller/release_history_test.go
@@ -25,7 +25,7 @@ import (
 )
 
 func TestGetHistory_WithRevisions(t *testing.T) {
-	mk := func(name string, vers int32, code rpb.Status_Code) *rpb.Release {
+	mk := func(name string, vers int, code rpb.StatusCode) *rpb.Release {
 		return &rpb.Release{
 			Name:    name,
 			Version: vers,
diff --git a/pkg/tiller/release_install.go b/pkg/tiller/release_install.go
index d4ae89a6608a37667330f2b7bf5917f65fb5877d..852c618b0dcf7c022058cd074a9bea9275064527 100644
--- a/pkg/tiller/release_install.go
+++ b/pkg/tiller/release_install.go
@@ -119,7 +119,7 @@ func (s *ReleaseServer) prepareRelease(req *hapi.InstallReleaseRequest) (*releas
 		},
 		Manifest: manifestDoc.String(),
 		Hooks:    hooks,
-		Version:  int32(revision),
+		Version:  revision,
 	}
 	if len(notesTxt) > 0 {
 		rel.Info.Status.Notes = notesTxt
diff --git a/pkg/tiller/release_list.go b/pkg/tiller/release_list.go
index a29413c216e35bb7cd159ab938d49cacf08b28ba..5f1a3312e49eb55df0755432c86fc52c894e8ac3 100644
--- a/pkg/tiller/release_list.go
+++ b/pkg/tiller/release_list.go
@@ -27,7 +27,7 @@ import (
 // ListReleases lists the releases found by the server.
 func (s *ReleaseServer) ListReleases(req *hapi.ListReleasesRequest) ([]*release.Release, error) {
 	if len(req.StatusCodes) == 0 {
-		req.StatusCodes = []release.Status_Code{release.Status_DEPLOYED}
+		req.StatusCodes = []release.StatusCode{release.Status_DEPLOYED}
 	}
 
 	rels, err := s.env.Releases.ListFilterAll(func(r *release.Release) bool {
diff --git a/pkg/tiller/release_list_test.go b/pkg/tiller/release_list_test.go
index a68ba82f1a433c5064d9e7c2c36d069938a22b32..e6ccbe5c85296f2ea6a05716286dfebc9c61e2b1 100644
--- a/pkg/tiller/release_list_test.go
+++ b/pkg/tiller/release_list_test.go
@@ -60,24 +60,24 @@ func TestListReleasesByStatus(t *testing.T) {
 	}
 
 	tests := []struct {
-		statusCodes []release.Status_Code
+		statusCodes []release.StatusCode
 		names       []string
 	}{
 		{
 			names:       []string{"kamal"},
-			statusCodes: []release.Status_Code{release.Status_DEPLOYED},
+			statusCodes: []release.StatusCode{release.Status_DEPLOYED},
 		},
 		{
 			names:       []string{"astrolabe"},
-			statusCodes: []release.Status_Code{release.Status_DELETED},
+			statusCodes: []release.StatusCode{release.Status_DELETED},
 		},
 		{
 			names:       []string{"kamal", "octant"},
-			statusCodes: []release.Status_Code{release.Status_DEPLOYED, release.Status_FAILED},
+			statusCodes: []release.StatusCode{release.Status_DEPLOYED, release.Status_FAILED},
 		},
 		{
 			names: []string{"kamal", "astrolabe", "octant", "sextant"},
-			statusCodes: []release.Status_Code{
+			statusCodes: []release.StatusCode{
 				release.Status_DEPLOYED,
 				release.Status_DELETED,
 				release.Status_FAILED,
diff --git a/pkg/tiller/release_rollback_test.go b/pkg/tiller/release_rollback_test.go
index e7db8a154a767b8b5da3392168b2adb700b45661..161e248b87954ad16caf6bf6cad3a703b2efa295 100644
--- a/pkg/tiller/release_rollback_test.go
+++ b/pkg/tiller/release_rollback_test.go
@@ -35,7 +35,7 @@ func TestRollbackRelease(t *testing.T) {
 			Kind:     "ConfigMap",
 			Path:     "test-cm",
 			Manifest: manifestWithRollbackHooks,
-			Events: []release.Hook_Event{
+			Events: []release.HookEvent{
 				release.Hook_PRE_ROLLBACK,
 				release.Hook_POST_ROLLBACK,
 			},
@@ -190,7 +190,7 @@ func TestRollbackReleaseNoHooks(t *testing.T) {
 			Kind:     "ConfigMap",
 			Path:     "test-cm",
 			Manifest: manifestWithRollbackHooks,
-			Events: []release.Hook_Event{
+			Events: []release.HookEvent{
 				release.Hook_PRE_ROLLBACK,
 				release.Hook_POST_ROLLBACK,
 			},
diff --git a/pkg/tiller/release_server_test.go b/pkg/tiller/release_server_test.go
index bdc108eaa498226168ba4339aa3e43f56b3c915c..916f2a005b7f0e764b48e887b20441aa23e3fba1 100644
--- a/pkg/tiller/release_server_test.go
+++ b/pkg/tiller/release_server_test.go
@@ -221,7 +221,7 @@ func releaseStub() *release.Release {
 	return namedReleaseStub("angry-panda", release.Status_DEPLOYED)
 }
 
-func namedReleaseStub(name string, status release.Status_Code) *release.Release {
+func namedReleaseStub(name string, status release.StatusCode) *release.Release {
 	date := time.Unix(242085845, 0)
 	return &release.Release{
 		Name: name,
@@ -240,7 +240,7 @@ func namedReleaseStub(name string, status release.Status_Code) *release.Release
 				Kind:     "ConfigMap",
 				Path:     "test-cm",
 				Manifest: manifestWithHook,
-				Events: []release.Hook_Event{
+				Events: []release.HookEvent{
 					release.Hook_POST_INSTALL,
 					release.Hook_PRE_DELETE,
 				},
@@ -250,7 +250,7 @@ func namedReleaseStub(name string, status release.Status_Code) *release.Release
 				Kind:     "Pod",
 				Path:     "finding-nemo",
 				Manifest: manifestWithTestHook,
-				Events: []release.Hook_Event{
+				Events: []release.HookEvent{
 					release.Hook_RELEASE_TEST_SUCCESS,
 				},
 			},
@@ -513,7 +513,7 @@ func deletePolicyStub(kubeClient *mockHooksKubeClient) *ReleaseServer {
 	}
 }
 
-func deletePolicyHookStub(hookName string, extraAnnotations map[string]string, DeletePolicies []release.Hook_DeletePolicy) *release.Hook {
+func deletePolicyHookStub(hookName string, extraAnnotations map[string]string, DeletePolicies []release.HookDeletePolicy) *release.Hook {
 	extraAnnotationsStr := ""
 	for k, v := range extraAnnotations {
 		extraAnnotationsStr += fmt.Sprintf("    \"%s\": \"%s\"\n", k, v)
@@ -530,7 +530,7 @@ metadata:
     "helm.sh/hook": pre-install,pre-upgrade
 %sdata:
 name: value`, hookName, extraAnnotationsStr),
-		Events: []release.Hook_Event{
+		Events: []release.HookEvent{
 			release.Hook_PRE_INSTALL,
 			release.Hook_PRE_UPGRADE,
 		},
@@ -617,7 +617,7 @@ func TestSuccessfulHookWithSucceededDeletePolicy(t *testing.T) {
 	ctx := newDeletePolicyContext()
 	hook := deletePolicyHookStub(ctx.HookName,
 		map[string]string{"helm.sh/hook-delete-policy": "hook-succeeded"},
-		[]release.Hook_DeletePolicy{release.Hook_SUCCEEDED},
+		[]release.HookDeletePolicy{release.Hook_SUCCEEDED},
 	)
 
 	err := execHookShouldSucceed(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreInstall)
@@ -633,7 +633,7 @@ func TestSuccessfulHookWithFailedDeletePolicy(t *testing.T) {
 	ctx := newDeletePolicyContext()
 	hook := deletePolicyHookStub(ctx.HookName,
 		map[string]string{"helm.sh/hook-delete-policy": "hook-failed"},
-		[]release.Hook_DeletePolicy{release.Hook_FAILED},
+		[]release.HookDeletePolicy{release.Hook_FAILED},
 	)
 
 	err := execHookShouldSucceed(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreInstall)
@@ -653,7 +653,7 @@ func TestFailedHookWithSucceededDeletePolicy(t *testing.T) {
 			"mockHooksKubeClient/Emulate": "hook-failed",
 			"helm.sh/hook-delete-policy":  "hook-succeeded",
 		},
-		[]release.Hook_DeletePolicy{release.Hook_SUCCEEDED},
+		[]release.HookDeletePolicy{release.Hook_SUCCEEDED},
 	)
 
 	err := execHookShouldFail(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreInstall)
@@ -673,7 +673,7 @@ func TestFailedHookWithFailedDeletePolicy(t *testing.T) {
 			"mockHooksKubeClient/Emulate": "hook-failed",
 			"helm.sh/hook-delete-policy":  "hook-failed",
 		},
-		[]release.Hook_DeletePolicy{release.Hook_FAILED},
+		[]release.HookDeletePolicy{release.Hook_FAILED},
 	)
 
 	err := execHookShouldFail(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreInstall)
@@ -692,7 +692,7 @@ func TestSuccessfulHookWithSuccededOrFailedDeletePolicy(t *testing.T) {
 		map[string]string{
 			"helm.sh/hook-delete-policy": "hook-succeeded,hook-failed",
 		},
-		[]release.Hook_DeletePolicy{release.Hook_SUCCEEDED, release.Hook_FAILED},
+		[]release.HookDeletePolicy{release.Hook_SUCCEEDED, release.Hook_FAILED},
 	)
 
 	err := execHookShouldSucceed(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreInstall)
@@ -712,7 +712,7 @@ func TestFailedHookWithSuccededOrFailedDeletePolicy(t *testing.T) {
 			"mockHooksKubeClient/Emulate": "hook-failed",
 			"helm.sh/hook-delete-policy":  "hook-succeeded,hook-failed",
 		},
-		[]release.Hook_DeletePolicy{release.Hook_SUCCEEDED, release.Hook_FAILED},
+		[]release.HookDeletePolicy{release.Hook_SUCCEEDED, release.Hook_FAILED},
 	)
 
 	err := execHookShouldFail(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreInstall)
@@ -753,7 +753,7 @@ func TestHookDeletingWithBeforeHookCreationDeletePolicy(t *testing.T) {
 
 	hook := deletePolicyHookStub(ctx.HookName,
 		map[string]string{"helm.sh/hook-delete-policy": "before-hook-creation"},
-		[]release.Hook_DeletePolicy{release.Hook_BEFORE_HOOK_CREATION},
+		[]release.HookDeletePolicy{release.Hook_BEFORE_HOOK_CREATION},
 	)
 
 	err := execHookShouldSucceed(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreInstall)
@@ -782,7 +782,7 @@ func TestSuccessfulHookWithMixedDeletePolicies(t *testing.T) {
 		map[string]string{
 			"helm.sh/hook-delete-policy": "hook-succeeded,before-hook-creation",
 		},
-		[]release.Hook_DeletePolicy{release.Hook_SUCCEEDED, release.Hook_BEFORE_HOOK_CREATION},
+		[]release.HookDeletePolicy{release.Hook_SUCCEEDED, release.Hook_BEFORE_HOOK_CREATION},
 	)
 
 	err := execHookShouldSucceed(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreInstall)
@@ -812,7 +812,7 @@ func TestFailedHookWithMixedDeletePolicies(t *testing.T) {
 			"mockHooksKubeClient/Emulate": "hook-failed",
 			"helm.sh/hook-delete-policy":  "hook-succeeded,before-hook-creation",
 		},
-		[]release.Hook_DeletePolicy{release.Hook_SUCCEEDED, release.Hook_BEFORE_HOOK_CREATION},
+		[]release.HookDeletePolicy{release.Hook_SUCCEEDED, release.Hook_BEFORE_HOOK_CREATION},
 	)
 
 	err := execHookShouldFail(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreInstall)
@@ -842,7 +842,7 @@ func TestFailedThenSuccessfulHookWithMixedDeletePolicies(t *testing.T) {
 			"mockHooksKubeClient/Emulate": "hook-failed",
 			"helm.sh/hook-delete-policy":  "hook-succeeded,before-hook-creation",
 		},
-		[]release.Hook_DeletePolicy{release.Hook_SUCCEEDED, release.Hook_BEFORE_HOOK_CREATION},
+		[]release.HookDeletePolicy{release.Hook_SUCCEEDED, release.Hook_BEFORE_HOOK_CREATION},
 	)
 
 	err := execHookShouldFail(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreInstall)
@@ -858,7 +858,7 @@ func TestFailedThenSuccessfulHookWithMixedDeletePolicies(t *testing.T) {
 		map[string]string{
 			"helm.sh/hook-delete-policy": "hook-succeeded,before-hook-creation",
 		},
-		[]release.Hook_DeletePolicy{release.Hook_SUCCEEDED, release.Hook_BEFORE_HOOK_CREATION},
+		[]release.HookDeletePolicy{release.Hook_SUCCEEDED, release.Hook_BEFORE_HOOK_CREATION},
 	)
 
 	err = execHookShouldSucceed(ctx.ReleaseServer, hook, ctx.ReleaseName, ctx.Namespace, hooks.PreUpgrade)
diff --git a/pkg/tiller/release_update.go b/pkg/tiller/release_update.go
index 41d2d4007371f208d3a427bb70d8fcc1efa64123..3e3312c77ce31d98a2160c5585e504fb80d0d0ee 100644
--- a/pkg/tiller/release_update.go
+++ b/pkg/tiller/release_update.go
@@ -99,7 +99,7 @@ func (s *ReleaseServer) prepareUpdate(req *hapi.UpdateReleaseRequest) (*release.
 		Time:      ts,
 		Namespace: currentRelease.Namespace,
 		IsUpgrade: true,
-		Revision:  int(revision),
+		Revision:  revision,
 	}
 
 	caps, err := capabilities(s.discovery)