Refactor, making all Source classes behave the same