Implement the replicator so that it correctly mediates between replication requests, snapshots and acknowledgements.