so far all the function finished! ^v^