diff --git a/README.md b/README.md
index fb6f870..8648e8f 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # Parsemail - simple email parsing Go library
 
-[![Build Status](https://circleci.com/gh/DusanKasan/Parsemail.svg?style=shield&circle-token=:circle-token)](https://circleci.com/gh/DusanKasan/Parsemail) [![Coverage Status](https://coveralls.io/repos/github/DusanKasan/Parsemail/badge.svg?branch=master)](https://coveralls.io/github/DusanKasan/Parsemail?branch=master)
+[![Build Status](https://circleci.com/gh/DusanKasan/Parsemail.svg?style=shield&circle-token=:circle-token)](https://circleci.com/gh/DusanKasan/Parsemail) [![Coverage Status](https://coveralls.io/repos/github/DusanKasan/Parsemail/badge.svg?branch=master)](https://coveralls.io/github/DusanKasan/Parsemail?branch=master) [![Go Report Card](https://goreportcard.com/badge/github.com/DusanKasan/Parsemail)](https://goreportcard.com/report/github.com/DusanKasan/Parsemail)
 
 This library allows for parsing an email message into a more convenient form than the `net/mail` provides. Where the `net/mail` just gives you a map of header fields and a `io.Reader` of its body, Parsemail allows access to all the standard header fields set in [RFC5322](https://tools.ietf.org/html/rfc5322), html/text body as well as attachements/embedded content as binary streams with metadata.
 
diff --git a/parsemail.go b/parsemail.go
index 52a1d57..293433f 100644
--- a/parsemail.go
+++ b/parsemail.go
@@ -3,7 +3,6 @@
 import (
 	"bytes"
 	"encoding/base64"
-	"errors"
 	"fmt"
 	"io"
 	"io/ioutil"
@@ -14,12 +13,13 @@
 	"time"
 )
 
-const content_type_multipart_mixed = "multipart/mixed"
-const content_type_multipart_alternative = "multipart/alternative"
-const content_type_multipart_related = "multipart/related"
-const content_type_text_html = "text/html"
-const content_type_text_plain = "text/plain"
+const contentTypeMultipartMixed = "multipart/mixed"
+const contentTypeMultipartAlternative = "multipart/alternative"
+const contentTypeMultipartRelated = "multipart/related"
+const contentTypeTextHtml = "text/html"
+const contentTypeTextPlain = "text/plain"
 
+// Parse an email message read from io.Reader into parsemail.Email struct
 func Parse(r io.Reader) (email Email, err error) {
 	msg, err := mail.ReadMessage(r)
 	if err != nil {
@@ -37,18 +37,18 @@
 	}
 
 	switch contentType {
-	case content_type_multipart_mixed:
+	case contentTypeMultipartMixed:
 		email.TextBody, email.HTMLBody, email.Attachments, email.EmbeddedFiles, err = parseMultipartMixed(msg.Body, params["boundary"])
-	case content_type_multipart_alternative:
+	case contentTypeMultipartAlternative:
 		email.TextBody, email.HTMLBody, email.EmbeddedFiles, err = parseMultipartAlternative(msg.Body, params["boundary"])
-	case content_type_text_plain:
+	case contentTypeTextPlain:
 		message, _ := ioutil.ReadAll(msg.Body)
 		email.TextBody = strings.TrimSuffix(string(message[:]), "\n")
-	case content_type_text_html:
+	case contentTypeTextHtml:
 		message, _ := ioutil.ReadAll(msg.Body)
 		email.HTMLBody = strings.TrimSuffix(string(message[:]), "\n")
 	default:
-		err = errors.New(fmt.Sprintf("Unknown top level mime type: %s", contentType))
+		err = fmt.Errorf("Unknown top level mime type: %s", contentType)
 	}
 
 	return
@@ -143,7 +143,7 @@
 
 func parseContentType(contentTypeHeader string) (contentType string, params map[string]string, err error) {
 	if contentTypeHeader == "" {
-		contentType = content_type_text_plain
+		contentType = contentTypeTextPlain
 		return
 	}
 
@@ -203,24 +203,23 @@
 		contentType, params, err := mime.ParseMediaType(part.Header.Get("Content-Type"))
 
 		switch contentType {
-		case content_type_text_plain:
+		case contentTypeTextPlain:
 			ppContent, err := ioutil.ReadAll(part)
 			if err != nil {
 				return textBody, htmlBody, embeddedFiles, err
 			}
 
 			textBody += strings.TrimSuffix(string(ppContent[:]), "\n")
-		case content_type_text_html:
+		case contentTypeTextHtml:
 			ppContent, err := ioutil.ReadAll(part)
 			if err != nil {
 				return textBody, htmlBody, embeddedFiles, err
 			}
 
 			htmlBody += strings.TrimSuffix(string(ppContent[:]), "\n")
-		case content_type_multipart_related:
-			var tb, hb string
-			var ef []EmbeddedFile
-			tb, hb, ef, err = parseMultipartAlternative(part, params["boundary"])
+		case contentTypeMultipartRelated:
+			tb, hb, ef, er := parseMultipartAlternative(part, params["boundary"])
+			err = er
 			htmlBody += hb
 			textBody += tb
 			embeddedFiles = append(embeddedFiles, ef...)
@@ -233,7 +232,7 @@
 
 				embeddedFiles = append(embeddedFiles, ef)
 			} else {
-				return textBody, htmlBody, embeddedFiles, errors.New(fmt.Sprintf("Can't process multipart/alternative inner mime type: %s", contentType))
+				return textBody, htmlBody, embeddedFiles, fmt.Errorf("Can't process multipart/alternative inner mime type: %s", contentType)
 			}
 		}
 	}
@@ -256,7 +255,7 @@
 			return textBody, htmlBody, attachments, embeddedFiles, err
 		}
 
-		if contentType == content_type_multipart_alternative {
+		if contentType == contentTypeMultipartAlternative {
 			textBody, htmlBody, embeddedFiles, err = parseMultipartAlternative(part, params["boundary"])
 			if err != nil {
 				return textBody, htmlBody, attachments, embeddedFiles, err
@@ -269,7 +268,7 @@
 
 			attachments = append(attachments, at)
 		} else {
-			return textBody, htmlBody, attachments, embeddedFiles, errors.New(fmt.Sprintf("Unknown multipart/mixed nested mime type: %s", contentType))
+			return textBody, htmlBody, attachments, embeddedFiles, fmt.Errorf("Unknown multipart/mixed nested mime type: %s", contentType)
 		}
 	}
 
@@ -328,9 +327,9 @@
 		}
 
 		return bytes.NewReader(dd), nil
-	} else {
-		return nil, errors.New(fmt.Sprintf("Unknown encoding: %s", encoding))
 	}
+
+	return nil, fmt.Errorf("Unknown encoding: %s", encoding)
 }
 
 func isEmbeddedFile(part *multipart.Part) bool {
@@ -377,18 +376,21 @@
 	return
 }
 
+// Represents email attachment with filename, content type and data (as a io.Reader)
 type Attachment struct {
 	Filename    string
 	ContentType string
 	Data        io.Reader
 }
 
+// Represents email embedded file with content id, content type and data (as a io.Reader)
 type EmbeddedFile struct {
 	CID         string
 	ContentType string
 	Data        io.Reader
 }
 
+// Represents email with fields for all the headers defined in RFC5322 with it's attachments and
 type Email struct {
 	Header mail.Header
 
diff --git a/parsemail_test.go b/parsemail_test.go
index fb9a231..6904f3b 100644
--- a/parsemail_test.go
+++ b/parsemail_test.go
@@ -39,49 +39,85 @@
 		headerCheck     func(mail.Header, *testing.T)
 	}{
 		1: {
-			mailData: RFC5322_Example_A11,
+			mailData: rfc5322exampleA11,
 			subject:  "Saying Hello",
 			from: []mail.Address{
-				{"John Doe", "jdoe@machine.example"},
+				{
+					Name:    "John Doe",
+					Address: "jdoe@machine.example",
+				},
 			},
 			to: []mail.Address{
-				{"Mary Smith", "mary@example.net"},
+				{
+					Name:    "Mary Smith",
+					Address: "mary@example.net",
+				},
 			},
-			sender:    mail.Address{"Michael Jones", "mjones@machine.example"},
+			sender: mail.Address{
+				Name:    "Michael Jones",
+				Address: "mjones@machine.example",
+			},
 			messageID: "1234@local.machine.example",
 			date:      parseDate("Fri, 21 Nov 1997 09:55:06 -0600"),
 			textBody: `This is a message just to say hello.
 So, "Hello".`,
 		},
 		2: {
-			mailData: RFC5322_Example_A12,
+			mailData: rfc5322exampleA12,
 			from: []mail.Address{
-				{"Joe Q. Public", "john.q.public@example.com"},
+				{
+					Name:    "Joe Q. Public",
+					Address: "john.q.public@example.com",
+				},
 			},
 			to: []mail.Address{
-				{"Mary Smith", "mary@x.test"},
-				{"", "jdoe@example.org"},
-				{"Who?", "one@y.test"},
+				{
+					Name:    "Mary Smith",
+					Address: "mary@x.test",
+				},
+				{
+					Name:    "",
+					Address: "jdoe@example.org",
+				},
+				{
+					Name:    "Who?",
+					Address: "one@y.test",
+				},
 			},
 			cc: []mail.Address{
-				{"", "boss@nil.test"},
-				{"Giant; \"Big\" Box", "sysservices@example.net"},
+				{
+					Name:    "",
+					Address: "boss@nil.test",
+				},
+				{
+					Name:    "Giant; \"Big\" Box",
+					Address: "sysservices@example.net",
+				},
 			},
 			messageID: "5678.21-Nov-1997@example.com",
 			date:      parseDate("Tue, 01 Jul 2003 10:52:37 +0200"),
 			textBody:  `Hi everyone.`,
 		},
 		3: {
-			mailData: RFC5322_Example_A2a,
+			mailData: rfc5322exampleA2a,
 			subject:  "Re: Saying Hello",
 			from: []mail.Address{
-				{"Mary Smith", "mary@example.net"},
+				{
+					Name:    "Mary Smith",
+					Address: "mary@example.net",
+				},
 			},
 			replyTo: []mail.Address{
-				{"Mary Smith: Personal Account", "smith@home.example"},
+				{
+					Name:    "Mary Smith: Personal Account",
+					Address: "smith@home.example",
+				},
 			},
 			to: []mail.Address{
-				{"John Doe", "jdoe@machine.example"},
+				{
+					Name:    "John Doe",
+					Address: "jdoe@machine.example",
+				},
 			},
 			messageID:  "3456@example.net",
 			inReplyTo:  []string{"1234@local.machine.example"},
@@ -90,13 +126,19 @@
 			textBody:   `This is a reply to your hello.`,
 		},
 		4: {
-			mailData: RFC5322_Example_A2b,
+			mailData: rfc5322exampleA2b,
 			subject:  "Re: Saying Hello",
 			from: []mail.Address{
-				{"John Doe", "jdoe@machine.example"},
+				{
+					Name:    "John Doe",
+					Address: "jdoe@machine.example",
+				},
 			},
 			to: []mail.Address{
-				{"Mary Smith: Personal Account", "smith@home.example"},
+				{
+					Name:    "Mary Smith: Personal Account",
+					Address: "smith@home.example",
+				},
 			},
 			messageID:  "abcd.1234@local.machine.test",
 			inReplyTo:  []string{"3456@example.net"},
@@ -105,21 +147,33 @@
 			textBody:   `This is a reply to your reply.`,
 		},
 		5: {
-			mailData: RFC5322_Example_A3,
+			mailData: rfc5322exampleA3,
 			subject:  "Saying Hello",
 			from: []mail.Address{
-				{"John Doe", "jdoe@machine.example"},
+				{
+					Name:    "John Doe",
+					Address: "jdoe@machine.example",
+				},
 			},
 			to: []mail.Address{
-				{"Mary Smith", "mary@example.net"},
+				{
+					Name:    "Mary Smith",
+					Address: "mary@example.net",
+				},
 			},
 			messageID: "1234@local.machine.example",
 			date:      parseDate("Fri, 21 Nov 1997 09:55:06 -0600"),
 			resentFrom: []mail.Address{
-				{"Mary Smith", "mary@example.net"},
+				{
+					Name:    "Mary Smith",
+					Address: "mary@example.net",
+				},
 			},
 			resentTo: []mail.Address{
-				{"Jane Brown", "j-brown@other.example"},
+				{
+					Name:    "Jane Brown",
+					Address: "j-brown@other.example",
+				},
 			},
 			resentMessageID: "78910@example.net",
 			resentDate:      parseDate("Mon, 24 Nov 1997 14:22:01 -0800"),
@@ -127,13 +181,19 @@
 So, "Hello".`,
 		},
 		6: {
-			mailData: Data1,
+			mailData: data1,
 			subject:  "Test Subject 1",
 			from: []mail.Address{
-				{"Peter Paholík", "peter.paholik@gmail.com"},
+				{
+					Name:    "Peter Paholík",
+					Address: "peter.paholik@gmail.com",
+				},
 			},
 			to: []mail.Address{
-				{"", "dusan@kasan.sk"},
+				{
+					Name:    "",
+					Address: "dusan@kasan.sk",
+				},
 			},
 			messageID: "CACtgX4kNXE7T5XKSKeH_zEcfUUmf2vXVASxYjaaK9cCn-3zb_g@mail.gmail.com",
 			date:      parseDate("Fri, 07 Apr 2017 09:17:26 +0200"),
@@ -147,16 +207,25 @@
 			},
 		},
 		7: {
-			mailData: Data2,
+			mailData: data2,
 			subject:  "Re: Test Subject 2",
 			from: []mail.Address{
-				{"Sender Man", "sender@domain.com"},
+				{
+					Name:    "Sender Man",
+					Address: "sender@domain.com",
+				},
 			},
 			to: []mail.Address{
-				{"", "info@receiver.com"},
+				{
+					Name:    "",
+					Address: "info@receiver.com",
+				},
 			},
 			cc: []mail.Address{
-				{"Cc Man", "ccman@gmail.com"},
+				{
+					Name:    "Cc Man",
+					Address: "ccman@gmail.com",
+				},
 			},
 			messageID:  "0e9a21b4-01dc-e5c1-dcd6-58ce5aa61f4f@receiver.com",
 			inReplyTo:  []string{"9ff38d03-c4ab-89b7-9328-e99d5e24e3ba@receiver.eu"},
@@ -313,7 +382,7 @@
 		}
 
 		if len(td.embeddedFiles) != len(e.EmbeddedFiles) {
-			t.Errorf("[Test Case %v] Incorrect number of embedded files! Expected: %s, Got: %s.", index, len(td.embeddedFiles), len(e.EmbeddedFiles))
+			t.Errorf("[Test Case %v] Incorrect number of embedded files! Expected: %s, Got: %v.", index, len(td.embeddedFiles), len(e.EmbeddedFiles))
 		} else {
 			embeds := e.EmbeddedFiles[:]
 
@@ -427,7 +496,7 @@
 	return
 }
 
-var Data1 = `From: =?UTF-8?Q?Peter_Pahol=C3=ADk?= <peter.paholik@gmail.com>
+var data1 = `From: =?UTF-8?Q?Peter_Pahol=C3=ADk?= <peter.paholik@gmail.com>
 Date: Fri, 7 Apr 2017 09:17:26 +0200
 Message-ID: <CACtgX4kNXE7T5XKSKeH_zEcfUUmf2vXVASxYjaaK9cCn-3zb_g@mail.gmail.com>
 Subject: Test Subject 1
@@ -465,7 +534,7 @@
 --f403045f1dcc043a44054c8e6bbf--
 `
 
-var Data2 = `Subject: Re: Test Subject 2
+var data2 = `Subject: Re: Test Subject 2
 To: info@receiver.com
 References: <2f6b7595-c01e-46e5-42bc-f263e1c4282d@receiver.com>
  <9ff38d03-c4ab-89b7-9328-e99d5e24e3ba@domain.com>
@@ -514,7 +583,7 @@
 --------------C70C0458A558E585ACB75FB4--
 `
 
-var RFC5322_Example_A11 = `From: John Doe <jdoe@machine.example>
+var rfc5322exampleA11 = `From: John Doe <jdoe@machine.example>
 Sender: Michael Jones <mjones@machine.example>
 To: Mary Smith <mary@example.net>
 Subject: Saying Hello
@@ -525,7 +594,7 @@
 So, "Hello".
 `
 
-var RFC5322_Example_A12 = `From: "Joe Q. Public" <john.q.public@example.com>
+var rfc5322exampleA12 = `From: "Joe Q. Public" <john.q.public@example.com>
 To: Mary Smith <mary@x.test>, jdoe@example.org, Who? <one@y.test>
 Cc: <boss@nil.test>, "Giant; \"Big\" Box" <sysservices@example.net>
 Date: Tue, 1 Jul 2003 10:52:37 +0200
@@ -536,7 +605,7 @@
 
 //todo: not yet implemented in net/mail
 //once there is support for this, add it
-var RFC5322_Example_A13 = `From: Pete <pete@silly.example>
+var rfc5322exampleA13 = `From: Pete <pete@silly.example>
 To: A Group:Ed Jones <c@a.test>,joe@where.test,John <jdoe@one.test>;
 Cc: Undisclosed recipients:;
 Date: Thu, 13 Feb 1969 23:32:54 -0330
@@ -546,7 +615,7 @@
 `
 
 //we skipped the first message bcause it's the same as A 1.1
-var RFC5322_Example_A2a = `From: Mary Smith <mary@example.net>
+var rfc5322exampleA2a = `From: Mary Smith <mary@example.net>
 To: John Doe <jdoe@machine.example>
 Reply-To: "Mary Smith: Personal Account" <smith@home.example>
 Subject: Re: Saying Hello
@@ -558,7 +627,7 @@
 This is a reply to your hello.
 `
 
-var RFC5322_Example_A2b = `To: "Mary Smith: Personal Account" <smith@home.example>
+var rfc5322exampleA2b = `To: "Mary Smith: Personal Account" <smith@home.example>
 From: John Doe <jdoe@machine.example>
 Subject: Re: Saying Hello
 Date: Fri, 21 Nov 1997 11:00:00 -0600
@@ -569,7 +638,7 @@
 This is a reply to your reply.
 `
 
-var RFC5322_Example_A3 = `Resent-From: Mary Smith <mary@example.net>
+var rfc5322exampleA3 = `Resent-From: Mary Smith <mary@example.net>
 Resent-To: Jane Brown <j-brown@other.example>
 Resent-Date: Mon, 24 Nov 1997 14:22:01 -0800
 Resent-Message-ID: <78910@example.net>
@@ -582,7 +651,7 @@
 This is a message just to say hello.
 So, "Hello".`
 
-var RFC5322_Example_A4 = `Received: from x.y.test
+var rfc5322exampleA4 = `Received: from x.y.test
   by example.net
   via TCP
   with ESMTP
