- added documentation along with helper constructors