Split getBody() into three functions.

This should make for clearer, less ugly code.
Added a lot of unit tests.
Set release date.
Updated the documentation