revamp message parsing