added content processing object (plus a bit of refactoring)