make metadata_provider class a pure interface. references #29