Refactor a bunch of copyvio internals. Store all sources with a result object.