refactor by concern