More testing and refactoring
Attempt to abstract filesystem

Leaving this for now, next target is extracting to memory instead of
disk