Tidied up the PHPDocs and set the base element to an abstract class