complete refactoring of everything.