- simplified description
- simplified header guards
- changed headergen to header
- removed final from class templates
- switched private to protected: test friendly