Reworking everything.
More passing tests