refactor why_register