Extras refactor

Here is my proposal on a restructure.  It will allow for easier testing.  I did introduce a test that did discover a few undefined items, so this can clean stuff up pretty quick.

I hate how github doesn't show the file renames instead of a diff.
This isn't needed anymore, as it got moved to a separate singleton.