Refactoring to add more abstraction, now much more project agnostic