Importer refactor

Merge of first round of importer refactorings with @motasem-salem work effectively merging #140 and #149.
maybe we do need both. This wouldn't be a bad thing as long as we had clear separation of concerns