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)
