added groff, divided into 3 parts, caching improved