This is a great way to refactor abstractions that have developed leaks under the pressure of delivery. I'm actually in the process of doing something similar with a server-side implementation that has gotten too intimate with the client code. Building a completely new client for a different problem domain shakes out the dependencies quickly.