added body source code. updated unit tests. needs more tests.