Add utility function for deferring async calls
Move submodule updating logic into separate class

get rid of direct github library calls
Refactor pull request creation