Initiating refactor

Starting over with a hopefully better approach that actually mirrors a
more human decision making process