Body parsing in separate function - thanks @cyli

- details is a property
- not using __dict__