provider <-> harvester protocol refactored to make it more flexible