diff --git a/models/error.go b/models/error.go
index 8e2048ded9..cd7fa35de4 100644
--- a/models/error.go
+++ b/models/error.go
@@ -392,6 +392,26 @@ func (err ErrReleaseNotExist) Error() string {
 	return fmt.Sprintf("Release tag does not exist [id: %d, tag_name: %s]", err.ID, err.TagName)
 }
 
+// __________                             .__
+// \______   \____________    ____   ____ |  |__
+//  |    |  _/\_  __ \__  \  /    \_/ ___\|  |  \
+//  |    |   \ |  | \// __ \|   |  \  \___|   Y  \
+//  |______  / |__|  (____  /___|  /\___  >___|  /
+//         \/             \/     \/     \/     \/
+
+type ErrBranchNotExist struct {
+	Name string
+}
+
+func IsErrBranchNotExist(err error) bool {
+	_, ok := err.(ErrBranchNotExist)
+	return ok
+}
+
+func (err ErrBranchNotExist) Error() string {
+	return fmt.Sprintf("Branch does not exist [name: %s]", err.Name)
+}
+
 //  __      __      ___.   .__                   __
 // /  \    /  \ ____\_ |__ |  |__   ____   ____ |  | __
 // \   \/\/   // __ \| __ \|  |  \ /  _ \ /  _ \|  |/ /
diff --git a/models/repo.go b/models/repo.go
index a0074a2953..8ce1f7190c 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -288,20 +288,6 @@ func (repo *Repository) GetMirror() (err error) {
 	return err
 }
 
-func (repo *Repository) GetBranch(br string) (*Branch, error) {
-	if(!git.IsBranchExist(repo.RepoPath(), br)){
-		return nil, fmt.Errorf("Branch does not exist: %s", br);
-	}
-	return &Branch{
-			Path: repo.RepoPath(),
-			Name: br,
-	},nil
-}
-
-func (repo *Repository) GetBranches() ([]*Branch, error) {
-	return GetBranchesByPath(repo.RepoPath())
-}
-
 func (repo *Repository) GetBaseRepo() (err error) {
 	if !repo.IsFork {
 		return nil
diff --git a/models/repo_branch.go b/models/repo_branch.go
index b784f7d537..9cf2e9c43e 100644
--- a/models/repo_branch.go
+++ b/models/repo_branch.go
@@ -9,8 +9,8 @@ import (
 )
 
 type Branch struct {
-	Path		string
-	Name      	string
+	Path string
+	Name string
 }
 
 func GetBranchesByPath(path string) ([]*Branch, error) {
@@ -24,14 +24,28 @@ func GetBranchesByPath(path string) ([]*Branch, error) {
 		return nil, err
 	}
 
-	Branches := make([]*Branch, len(brs))
+	branches := make([]*Branch, len(brs))
 	for i := range brs {
-		Branches[i] = &Branch{
+		branches[i] = &Branch{
 			Path: path,
 			Name: brs[i],
 		}
 	}
-	return Branches, nil
+	return branches, nil
+}
+
+func (repo *Repository) GetBranch(br string) (*Branch, error) {
+	if !git.IsBranchExist(repo.RepoPath(), br) {
+		return nil, &ErrBranchNotExist{br}
+	}
+	return &Branch{
+		Path: repo.RepoPath(),
+		Name: br,
+	}, nil
+}
+
+func (repo *Repository) GetBranches() ([]*Branch, error) {
+	return GetBranchesByPath(repo.RepoPath())
 }
 
 func (br *Branch) GetCommit() (*git.Commit, error) {
diff --git a/routers/api/v1/repo/branch.go b/routers/api/v1/repo/branch.go
index d322b6b592..e2f15ff5e5 100644
--- a/routers/api/v1/repo/branch.go
+++ b/routers/api/v1/repo/branch.go
@@ -11,45 +11,40 @@ import (
 	"github.com/gogits/gogs/routers/api/v1/convert"
 )
 
-// Temporary: https://gist.github.com/sapk/df64347ff218baf4a277#get-a-branch
-// https://github.com/gogits/go-gogs-client/wiki/Repositories-Branches#get-a-branch
+// https://github.com/gogits/go-gogs-client/wiki/Repositories#get-branch
 func GetBranch(ctx *middleware.Context) {
-	// Getting the branch requested
 	branch, err := ctx.Repo.Repository.GetBranch(ctx.Params(":branchname"))
 	if err != nil {
-		ctx.APIError(500, "Repository.GetBranch", err)
+		ctx.APIError(500, "GetBranch", err)
 		return
 	}
-	// Getting the last commit of the branch
+
 	c, err := branch.GetCommit()
 	if err != nil {
-		ctx.APIError(500, "Branch.GetCommit", err)
+		ctx.APIError(500, "GetCommit", err)
 		return
 	}
-	// Converting to API format and send payload
-	ctx.JSON(200, convert.ToApiBranch(branch,c))
+
+	ctx.JSON(200, convert.ToApiBranch(branch, c))
 }
 
-// Temporary: https://gist.github.com/sapk/df64347ff218baf4a277#list-branches
-// https://github.com/gogits/go-gogs-client/wiki/Repositories-Branches#list-branches
+// https://github.com/gogits/go-gogs-client/wiki/Repositories#list-branches
 func ListBranches(ctx *middleware.Context) {
-	// Listing of branches
-	Branches, err := ctx.Repo.Repository.GetBranches()
+	branches, err := ctx.Repo.Repository.GetBranches()
 	if err != nil {
-		ctx.APIError(500, "Repository.GetBranches", err)
+		ctx.APIError(500, "GetBranches", err)
 		return
 	}
-	// Getting the last commit of each branch
-	apiBranches := make([]*api.Branch, len(Branches))
-	for i := range Branches {
-		c, err := Branches[i].GetCommit()
+
+	apiBranches := make([]*api.Branch, len(branches))
+	for i := range branches {
+		c, err := branches[i].GetCommit()
 		if err != nil {
-			ctx.APIError(500, "Branch.GetCommit", err)
+			ctx.APIError(500, "GetCommit", err)
 			return
 		}
-		// Converting to API format
-		apiBranches[i] = convert.ToApiBranch(Branches[i],c)
+		apiBranches[i] = convert.ToApiBranch(branches[i], c)
 	}
-	// Sending the payload
+
 	ctx.JSON(200, &apiBranches)
 }