refactor notification module