use array_fill_keys instead of a manual loop
don't save users from themselves

If the behavior config is changed such that it triggers an undefined
index error - don't silently swallow that
whitespace corrections
throw an exception for invalid $when values