we finish message def refactor, but still cannot compile