restructure code a bit to make more modular, add missing deps, add npm s...

i commented a bunch inline
are there any conventions/style guides surrounding capitalization? i.e., should it be GithubProvider?