add infrastructure for handling republish better
finish up republish implementation