replace datasets: lots of custom hacking because replace is hard