add _ prefix to the protected properties.
keep _keyName as part of protected property.
wrap $_dao with _dao method. not to use the property directly.
throw an exception if dao is not set properly.
set up hooks in a method (easier to over write it).
set up hooks in the setUpHooks method.