functionality done, ready to fully refactor.