Changed all protected variables to private variables, and added used getter as accessors where necessary.
Added some @override