Major Refactor
Additions for major refactor