Progressed on refactor
Refactored as constructor, behavior matches master