Cleanup and breakout.

Cleaned up structure for better multi-file tests.
Broke tests out into files for easier testing/maintenance.