lots of documentations and clarifications