Every now and again in the natural evolution of a project. You are going to end up with 2 similar paths for doing task X. Like all good divergent paths, eventually path A != B. You end up spending days, and days making A behave like B. But A isn't B. Too many times I watch people say, duct tape it and move on. Fix it, it costs less. If you don't have a producer that can understand frontloaded time now, saves bugs later during live, I suggest practicing in a mirror, your spouse, my cat (he has plenty of experience listening to me ramble, often sober).
That's why with a beta looming in the future, I'm re-writing a major gameplay system from scratch. We really don't spend enough time as engineers paying down the technical debt we accrue in the "Just ship this milestone" mentality. For Console guys, it's not as bad, its often in the gameplay layer and we can in practice, dispose of those parts. For live teams, that debt becomes your successors thorn.