completely refactor messages