Lots of refactoring. Work in progress.