Break out implementation

First stab at breaking out the various implementations. This will support work on fedora 4. Do not merge yet. There is a commit coming for islandora.