def documentations, further restructuring