make the content fields abstract so that it can be user-defined