For #23. Still pulling common functionality into utility/helper classes. This is a piece of a larger refactor