why the separate `msg`?