major refactor in progress.