defined types of operative functions
restruct types and underlines
fix types and add some accessor