A bunch of refactoring, lots of boilerplate now, however should allow me to move toward a factory for fetching the content