use Buffer as internal body, some api changes too