diff --git a/README.md b/README.md
index 9f199ba..62052f0 100755
--- a/README.md
+++ b/README.md
@@ -159,14 +159,13 @@
 ```
 
 Command to get GitHub issues (any GitHub repository) report in CSV format
-
+Note: On Prompt "Enter your GitHub Password:" enter your GitHub password.
 ```shell
-python ./tools/github_issues_to_csv <github user> <password> <github repo>
+python ./tools/github_issues_to_csv <github user> <github repo>
 
 Example for getting openbmc issues
-python ./tools/github_issues_to_csv <github user> <password>  openbmc/openbmc
+python ./tools/github_issues_to_csv <github user>  openbmc/openbmc
 
 Example for getting openbmc-test-automation issues
-python ./tools/github_issues_to_csv <github user> <password>  openbmc/openbmc-test-automation
-
+python ./tools/github_issues_to_csv <github user>  openbmc/openbmc-test-automation
 ```
diff --git a/tools/github_issues_to_csv b/tools/github_issues_to_csv
index b51347e..a8dd6b3 100644
--- a/tools/github_issues_to_csv
+++ b/tools/github_issues_to_csv
@@ -7,7 +7,7 @@
 """
 import argparse
 import csv
-from getpass import getpass
+import getpass
 import requests
 
 auth = None
@@ -24,17 +24,27 @@
     for issue in response.json():
         if 'pull_request' not in issue:
             labels = ', '.join([l['name'] for l in issue['labels']])
-            date = issue['created_at'].split('T')[0]
+            date = issue.get('created_at').split('T')[0]
+            # Below lines to overcome "TypeError: 'NoneType' object has
+            # no attribute '__getitem__'"
+
+            assignee_resp = issue.get('assignee', 'Not Assigned')
+            if assignee_resp:
+                assignee_resp = assignee_resp.get('login').encode('utf-8')
+            else:
+                assignee_resp = "Not Assigned"
+
             # Change the following line to write out additional fields
             csv_out.writerow([labels.encode('utf-8'),
-                             issue['title'].encode('utf-8'),
-                             issue['state'].encode('utf-8'),
+                             issue.get('title').encode('utf-8'),
+                             issue.get('state').encode('utf-8'),
                              date.encode('utf-8'),
-                             issue['html_url'].encode('utf-8'),
-                             issue['user']['login'].encode('utf-8')])
+                             issue.get('html_url').encode('utf-8'),
+                             issue.get('user').get('login').encode('utf-8'),
+                             assignee_resp])
 
 
-def get_github_issues(name):
+def get_issues_from_github_to_csv(name):
     r"""
     Requests issues from GitHub API and writes to CSV file.
     """
@@ -49,7 +59,8 @@
     csvfilename = '{}-issues.csv'.format(name.replace('/', '-'))
     with open(csvfilename, 'w') as csvfile:
         csv_out = csv.writer(csvfile)
-        csv_out.writerow(['Labels', 'Title', 'State', 'Date', 'URL', 'Author'])
+        csv_out.writerow(['Labels', 'Title', 'State', 'Date', 'URL', 'Author',
+                         'Assignee'])
         write_issues(response, csv_out)
 
         # Multiple requests are required if response is paged
@@ -74,9 +85,6 @@
 parser.add_argument('username', nargs='+', help="GitHub user name, "
                     "formatted as 'username'")
 
-parser.add_argument('password', nargs='+', help="GitHub username password, "
-                    "formatted as 'password'")
-
 parser.add_argument('repositories', nargs='+', help="Repository names, "
                     "formatted as 'basereponame/repo'")
 
@@ -90,10 +98,9 @@
 for argusername in args.username:
     username = argusername
 
-for argpassword in args.password:
-    password = argpassword
+password = getpass.getpass("Enter your GitHub Password:")
 
 auth = (username, password)
 
 for repository in args.repositories:
-    get_github_issues(repository)
+    get_issues_from_github_to_csv(repository)
