- made protected no argument constructors and improve documentation