Clean up class structure that uses string as keys and crazy non-objects

I've decided to take on the "Cleaning up the horrendous class structure that is using strings as keys and crazy non-objects" task from the read me. I'll keep this thread updated as I progress.