abstract out attributes handling
rework initialization steps
add a skip init attribute
implement start and end attributes
make start and end rtl friendly