fix: keep body and make encoding process explicit