super major refactor, project got out of hand