This wasn't working out, there is still some duplicate code. But not that much, and from the API, there is no different. Hooray!