abstracting authentication out of GitHubApi and modifying the ui