core: errors can use error_message to specify string error message
core: defined action hook names can be strings, convert to symbols