support read from body