Message refactor (wip)