changing how settings work shouldn't be mixed into this patch - it's logically separate.

if we're doing it this new way, the register() function above should be deleted so people don't use the old way. No reason to keep dead code around.