+ abstract methods: init(), final()
+ object state to maintain the object lifecycle state.
+ the object loading states:
  * unload: the object is not loaded from database.
  * loading: the object is loading from database.
  * loaded: the object has already been loaded from database.
    * dirtied: the object has been modified, but not saved to database yet.
    * modifying: the object has been modified to database, but not loaded to the object(affect the loading state to loading)
    * modified: the object has been modified to database(not affect the loading state).
    * deleted: the object has been deleted from database(affect the object state to destroyed).
* use the new init() and final() method coming from InterfacedObject
  - remove no useful destroy() method
* the destroy event rename to destroyed event.
* update readme