Use protected properties and accessor methods
use late static binding in order to retrieve the called class name
Remove invalid todo