refactor for density and clarity
handle nacks when waiting for confirms