refactor message: no more marshal