add many function that I didn't commit due to misunderstanding git command