refactor & messages