Add AbstractRetriever and remove duplicate implementations through inheritence
Add coverage directory and IDE files to gitignore
Remove tabs/whitespace. Add unit test coverage. Add code comments.