restuctred src and doc