Overhaul.

Code is messy.  I'll clean it up Later (tm).