adding third_party dependencies, adding tests, and cleanup