refactoring protected property and method
comment unimplemented methods