factoring out documentation requirements