refactoring get set
make macro work
add if and block
refater require
some fix on docs and errors