As stated in the Pull Request, I wanted to agree on a public API first, then we can factor out the common code.