Add major refactor