Major commit. Decided to remove oauth2 methods for retrieving access key, if the user needs to retrieve it there are plenty of packages that do that. Code reorganization and refactorization.