simplify a bit the initSelf() method
refactor code to generate attribute getter/setter
avoid calling initSelf() for *every* block
final