Restructured the project

Restructured the project for better separation of concerns (IMHO) and
mostly to make it more clear what the shape of a new data provider needs
to look like.